Submission #1023177

#TimeUsernameProblemLanguageResultExecution timeMemory
1023177vahagngAwesome Arrowland Adventure (eJOI19_adventure)C++17
22 / 100
1 ms348 KiB
//----------vahagng----------// #define _CRT_SECURE_NO_WARNINGS #include <bits/stdc++.h> // #include <ext/pb_ds/assoc_container.hpp> using namespace std; // using namespace __gnu_pbds; // template <class T> using ordered_set = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>; // Defines #define ll long long #define all(v) v.begin(), v.end() #define rall(v) v.rbegin(), v.rend() #define pii pair<int, int> #define ppb pop_back #define pb push_back #define mii map<int, int> #define mll map<long long, long long> #define no_ans cout << -1 << '\n'; #define YES cout << "YES\n"; #define NO cout << "NO\n"; #define ok cout << "OK\n"; #define ld long double #define sz(v) v.size() #define endl '\n' // Constants const int N = 2e5+10, M = 3e5+10; const ll inf = 1e18, mod = 1e9+7, mod1 = 998244353; // Functions void SetIO(string str = "") { if (str != "") { freopen((str + ".in").c_str(), "r", stdin); freopen((str + ".out").c_str(), "w", stdout); } else { freopen("input.txt", "r", stdin); freopen("output.txt", "w", stdout); } } void FastIO() { ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); } ll add(ll a, ll b) { return (a + b)%mod; } ll mult(ll a, ll b) { return (a%mod * b%mod)%mod; } ll sub(ll a, ll b) { return (a - b + 2*mod)%mod; } long long binpower(long long a, long long n) { if(n == 0) { return 1; } if(n == 1) { return a; } if(n % 2 == 1) { long long curr = binpower(a, n / 2); curr = mult(curr, curr); curr = mult(a, curr); return curr; } else { long long curr = binpower(a, n / 2); return mult(curr, curr); } } // const int N = 2e5 + 10; // int n; // pair<int,int>max_dist; // vector<int>adj[N]; // int dists[N]; // void dfs(int node, int parent, int dist) // { // dists[node] = max(dists[node], dist); // if(dist > max_dist.first) // { // max_dist = {dist, node}; // } // for(auto i: adj[node]) // { // if(i == parent) continue; // dfs(i, node, dist + 1); // } // } // pair<int, int> get_farthest_distance(int node) // { // max_dist = {-1, -1}; // dfs(node, -1, 0); // return max_dist; // } void precision(int x) { cout.setf(ios::fixed | ios::showpoint); cout.precision(x); return; } ll countSubstring(const string str, const string sub) { if (sub.length() == 0) return 0; ll count = 0; for(int i = 0; i < str.size() - sub.size() + 1; i++) { int okk = 1; for(int j = i; j < i + sub.size(); j++) { if(str[j] != sub[j - i]) { okk = 0; break; } } count += okk; } return count; } ll ceil_division(ll a, ll b) { return (a + b - 1) / b; } ll max_subarray_sum(vector<ll>& v, int n) { ll a = INT64_MIN, b = 0; for(int i = 0; i < n; i++) { b += v[i]; if(b > a) { a = b; } if(b<0) { b = a; } } return a; } //Solution int n, m, dist[505][505]; char c[505][505]; int dx[] = {1, 0, 0, -1}; int dy[] = {0, 1, -1, 0}; map<char,int>mp; bool visited[505][505]; int dir[] = {1, 2, 3, 4}; int a[505][505]; int f(char c) { if(c == 'N') return 1; if(c == 'E') return 2; if(c == 'S') return 3; if(c == 'W') return 4; return 5; } void solve(int tc) { cin >> n >> m; for(int i = 1; i <= n; i++) { for(int j = 1; j <= m; j++) { cin >> c[i][j]; a[i][j] = f(c[i][j]); } } priority_queue<pair<int,pair<int,int> >, vector<pair<int,pair<int,int> > >, greater<pair<int,pair<int,int> > > > pq; pq.push(make_pair(0, make_pair(1, 1))); for(int i = 1; i <= n; i++) { for(int j = 1; j <= m; j++) { dist[i][j] = INT_MAX; } } dist[1][1] = 0; while(!pq.empty()) { int cnt = pq.top().first; int i = pq.top().second.first; int j = pq.top().second.second; pq.pop(); if(visited[i][j]) continue; visited[i][j] = true; for(int k = 0; k < 4; k++) { int x = i + dx[k], y = j + dy[k]; if(x > n|| y >m|| x <1|| y < 1)continue; if(a[x][y]==0) continue; if(a[x][y]==5&& (x!= n ||y!=m)) continue; int cnt1 = ((dir[k] - a[i][j]) + 4)%4; if(cnt1 + cnt < dist[x][y]) { dist[x][y] = cnt + cnt1; pq.push(make_pair(cnt1 + cnt, make_pair(x, y))); } } } cout << (dist[n][m] == INT_MAX ? -1 : dist[n][m]) << endl; } void precalc() { } int main() { // SetIO(""); FastIO(); int test_case = 1; // cin >> test_case; precalc(); int cnt = 1; while (test_case--) { solve(cnt++); } return 0; }

Compilation message (stderr)

adventure.cpp: In function 'long long int countSubstring(std::string, std::string)':
adventure.cpp:127:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  127 |  for(int i = 0; i < str.size() - sub.size() + 1; i++)
      |                 ~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
adventure.cpp:130:26: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  130 |         for(int j = i; j < i + sub.size(); j++)
      |                        ~~^~~~~~~~~~~~~~~~
adventure.cpp: In function 'void SetIO(std::string)':
adventure.cpp:37:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   37 |         freopen((str + ".in").c_str(), "r", stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
adventure.cpp:38:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   38 |         freopen((str + ".out").c_str(), "w", stdout);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
adventure.cpp:40:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   40 |         freopen("input.txt", "r", stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
adventure.cpp:41:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   41 |         freopen("output.txt", "w", stdout);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...