Task: | Suunnistus |
Sender: | Laserr |
Submission time: | 2025-01-18 15:10:38 +0200 |
Language: | C++ (C++11) |
Status: | READY |
Result: | 31 |
group | verdict | score |
---|---|---|
#1 | ACCEPTED | 31 |
#2 | WRONG ANSWER | 0 |
#3 | WRONG ANSWER | 0 |
test | verdict | time | group | |
---|---|---|---|---|
#1 | ACCEPTED | 0.03 s | 3 | details |
#2 | ACCEPTED | 0.07 s | 1, 2, 3 | details |
#3 | ACCEPTED | 0.07 s | 1, 2, 3 | details |
#4 | ACCEPTED | 0.04 s | 1, 2, 3 | details |
#5 | ACCEPTED | 0.04 s | 1, 2, 3 | details |
#6 | ACCEPTED | 0.03 s | 1, 2, 3 | details |
#7 | ACCEPTED | 0.39 s | 2, 3 | details |
#8 | ACCEPTED | 0.39 s | 2, 3 | details |
#9 | ACCEPTED | 0.04 s | 2, 3 | details |
#10 | ACCEPTED | 0.55 s | 3 | details |
#11 | ACCEPTED | 0.57 s | 3 | details |
#12 | ACCEPTED | 0.05 s | 3 | details |
#13 | ACCEPTED | 0.41 s | 3 | details |
#14 | ACCEPTED | 0.11 s | 2, 3 | details |
#15 | ACCEPTED | 0.06 s | 3 | details |
#16 | ACCEPTED | 0.03 s | 3 | details |
#17 | WRONG ANSWER | 0.07 s | 2, 3 | details |
Compiler report
input/code.cpp: In function 'int main()': input/code.cpp:97:12: warning: comparison of integer expressions of different signedness: 'const int' and 'std::set<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare] 97 | if(*it != check.size()){ | ~~~~^~~~~~~~~~~~~~~
Code
#include <bits/stdc++.h> using namespace std; int n, m, k; string g[1010]; pair<int, int> st, en; set<int> check; vector<pair<int,int>> nums[10]; int e[10][1010][1010]; //etaisyydet int z[10][1010][1010]; //kattoo onko kayty int to_int(char c){ return (int)c - 48; } char to_char(int x){ return (char)(x + 48); } void dij(priority_queue<pair<int, pair<int,int>>>* q, int x, int dist, int i, int j){ if (e[x][i][j] == -1 || dist + 1 < e[x][i][j]){ e[x][i][j] = dist + 1; (*q).push({-(dist + 1), {i, j}}); } } void dfs(int x, char c){ // x: nykynen numeor, char c: char jota etitään priority_queue<pair<int, pair<int,int>>> q; //muista että priority_queue järjestää isoimman ensimmäiseksi. if (x == 0) { e[0][st.first][st.second] = 0; q.push({0, st}); } else{ for(pair<int, int> i : nums[x]){ if(e[x-1][i.first][i.second] == -1) continue; e[x][i.first][i.second] = e[x-1][i.first][i.second]; q.push({-e[x][i.first][i.second], i}); //nää täytyy lisätä niiku djikstra } } while(!q.empty()){ int dist = -q.top().first; pair<int,int> l = q.top().second; dist = e[x][l.first][l.second]; q.pop(); if(z[x][l.first][l.second]) continue; z[x][l.first][l.second] = 1; if (l.second - 1 >= 0 && g[l.first][l.second - 1] != '#') dij(&q, x, dist, l.first, l.second - 1); // vasen if (l.second + 1 < m && g[l.first][l.second + 1] != '#') dij(&q, x, dist, l.first, l.second + 1);//oikea if (l.first - 1 >= 0 && g[l.first - 1][l.second] != '#') dij(&q, x, dist, l.first - 1, l.second); //ylos if (l.first + 1 < n && g[l.first + 1][l.second] != '#') dij(&q, x, dist, l.first + 1, l.second); //alas } } int main(){ cin >> n >> m >> k; for(int i = 0; i < n; i++) cin >> g[i]; for(int i = 0; i < 10; i++){ for(int j = 0; j < 1010; j++){ for(int k = 0; k < 1010; k++){ e[i][j][k] = -1; } } } st = {-1, -1}; en = {-1, -1}; for(int i = 0; i < n; i++){ for(int j = 0; j < m; j++){ if (g[i][j] == 'S') st = {i, j}; else if (g[i][j] == 'E') en = {i, j}; else if (g[i][j] != '#' && g[i][j] != '.'){ check.insert(to_int(g[i][j])); nums[to_int(g[i][j])].push_back({i, j}); } } } nums[0].push_back(st); if (check.empty()){ dfs(0, 'E'); cout << e[0][en.first][en.second] << endl; return 0; } auto it = check.end(); it--; if(*it != check.size()){ cout << -1 << endl; return 0; } for(auto i : check) dfs(i - 1, to_char(i)); dfs(*it, 'E'); int ans = e[*it][en.first][en.second]; cout << ans << endl; }
Test details
Test 1
Group: 3
Verdict: ACCEPTED
input |
---|
10 10 9 S293#35616 #662963731 54975451#7 5162589168 ... |
correct output |
---|
25 |
user output |
---|
25 |
Test 2
Group: 1, 2, 3
Verdict: ACCEPTED
input |
---|
500 500 0 ................................. |
correct output |
---|
301 |
user output |
---|
301 |
Test 3
Group: 1, 2, 3
Verdict: ACCEPTED
input |
---|
500 500 0 .#.........#.#..##..#............ |
correct output |
---|
253 |
user output |
---|
253 |
Test 4
Group: 1, 2, 3
Verdict: ACCEPTED
input |
---|
500 500 0 ...#......##.##.#.#..##..#..##... |
correct output |
---|
-1 |
user output |
---|
-1 |
Test 5
Group: 1, 2, 3
Verdict: ACCEPTED
input |
---|
500 1 0 . . . . ... |
correct output |
---|
77 |
user output |
---|
77 |
Test 6
Group: 1, 2, 3
Verdict: ACCEPTED
input |
---|
1 500 0 ................................. |
correct output |
---|
166 |
user output |
---|
166 |
Test 7
Group: 2, 3
Verdict: ACCEPTED
input |
---|
500 500 9 ................................. |
correct output |
---|
3447 |
user output |
---|
3447 |
Test 8
Group: 2, 3
Verdict: ACCEPTED
input |
---|
500 500 9 .#........#..................#... |
correct output |
---|
4952 |
user output |
---|
4952 |
Test 9
Group: 2, 3
Verdict: ACCEPTED
input |
---|
500 500 9 ##.########.##########.#..#...... |
correct output |
---|
-1 |
user output |
---|
-1 |
Test 10
Group: 3
Verdict: ACCEPTED
input |
---|
500 500 9 623475428948841896621266296765... |
correct output |
---|
205 |
user output |
---|
205 |
Test 11
Group: 3
Verdict: ACCEPTED
input |
---|
500 500 9 7##814125813#3463#272134469457... |
correct output |
---|
157 |
user output |
---|
157 |
Test 12
Group: 3
Verdict: ACCEPTED
input |
---|
500 500 9 ##67##36##5#3###67###8972#61##... |
correct output |
---|
-1 |
user output |
---|
-1 |
Test 13
Group: 3
Verdict: ACCEPTED
input |
---|
500 500 9 ....................#...#........ |
correct output |
---|
1313 |
user output |
---|
1313 |
Test 14
Group: 2, 3
Verdict: ACCEPTED
input |
---|
499 499 9 S#...#...#...#...#...#...#...#... |
correct output |
---|
1124942 |
user output |
---|
1124942 |
Test 15
Group: 3
Verdict: ACCEPTED
input |
---|
500 1 9 1 6 1 3 ... |
correct output |
---|
332 |
user output |
---|
332 |
Test 16
Group: 3
Verdict: ACCEPTED
input |
---|
1 500 9 996327784392827829434482995353... |
correct output |
---|
135 |
user output |
---|
135 |
Test 17
Group: 2, 3
Verdict: WRONG ANSWER
input |
---|
500 500 9 ................................. |
correct output |
---|
-1 |
user output |
---|
453 |