# |
Submission time |
Handle |
Problem |
Language |
Result |
Execution time |
Memory |
804536 |
2023-08-03T09:38:29 Z |
tlnk07 |
Patkice (COCI20_patkice) |
C++17 |
|
226 ms |
524288 KB |
#include<bits/stdc++.h>
using namespace std;
long long n, m, start, finish;
string s;
vector<int> vec[100001];
bool check = 0;
char ans;
pair<int, char> mini = {INT_MAX, '0'};
void dfs(int x, int h)
{
if(x == finish)
{
check = 1;
if(mini.first > h) mini = {h, ans};
}
if(check) return;
for(int c : vec[x])
{
if(x == start)
{
check = 0;
if(c == start + m) ans = 'S';
else if(c == start + 1) ans = 'E';
else if(c == start - 1) ans = 'W';
else ans = 'N';
}
dfs(c, h + 1);
}
}
int main()
{
cin >> n >> m;
for(int i = 0; i < n; ++i)
{
cin >> s;
for(int j = 0; j < m; ++j)
{
if(s[j] == 'o')
{
start = i * n + j + 1;
if(i < n - 1) vec[i * n + j + 1].push_back(i * n + j + m + 1);
if(j < m - 1) vec[i * n + j + 1].push_back(i * n + j + 2);
if(j > 0) vec[i * n + j + 1].push_back(i * n + j);
if(i > 0) vec[i * n + j + 1].push_back(i * n + j - n + 1);
}
else if(s[j] == 'x') finish = i * n + j + 1;
else if(s[j] == 'v') vec[i * n + j + 1].push_back(i * n + j + m + 1);
else if(s[j] == '>') vec[i * n + j + 1].push_back(i * n + j + 2);
else if(s[j] == '<') vec[i * n + j + 1].push_back(i * n + j);
else if(s[j] == '^') vec[i * n + j + 1].push_back(i * n + j - m + 1);
}
}
dfs(start, 0);
if(mini.first < INT_MAX) cout << ":)\n" << mini.second;
else cout << ":(";
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
2656 KB |
Output is correct |
2 |
Runtime error |
215 ms |
524288 KB |
Execution killed with signal 9 |
3 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Runtime error |
226 ms |
524288 KB |
Execution killed with signal 9 |
2 |
Halted |
0 ms |
0 KB |
- |