Submission #1269065

#TimeUsernameProblemLanguageResultExecution timeMemory
1269065ducdevNautilus (BOI19_nautilus)C++17
100 / 100
130 ms800 KiB
// Author: 4uckd3v - Nguyen Cao Duc #include <bits/stdc++.h> using namespace std; typedef long long ll; const int MAX_N = 500; const int MAX_K = 5000; const int MOD = 1e9 + 7; int m, n, k; string dir; bitset<MAX_N + 5> nxt[MAX_N + 5], cur[MAX_N + 5], ban[MAX_N + 5], mask; char a[MAX_N + 5][MAX_N + 5]; int main() { ios_base::sync_with_stdio(0); cin.tie(0); if (fopen("MAIN.INP", "r")) { freopen("MAIN.INP", "r", stdin); freopen("MAIN.OUT", "w", stdout); }; cin >> m >> n >> k; for (int i = 1; i <= m; i++) { for (int j = 1; j <= n; j++) { cin >> a[i][j]; if (a[i][j] == '.') cur[i].set(j); else ban[i].set(j); }; }; cin >> dir; dir = " " + dir; for (int i = 1; i <= n; i++) mask.set(i); int res = 0; for (int i = 1; i <= k; i++) { for (int j = 1; j <= m; j++) nxt[j].reset(); for (int j = 1; j <= m; j++) { if (dir[i] == 'W' || dir[i] == '?') nxt[j] |= (cur[j] >> 1); if (dir[i] == 'E' || dir[i] == '?') nxt[j] |= (cur[j] << 1); if (dir[i] == 'S' || dir[i] == '?') nxt[j] |= cur[j - 1]; if (dir[i] == 'N' || dir[i] == '?') nxt[j] |= cur[j + 1]; nxt[j] &= mask; nxt[j] &= ~ban[j]; }; for (int j = 1; j <= m; j++) swap(nxt[j], cur[j]); }; for (int i = 1; i <= m; i++) res += cur[i].count(); cout << res << '\n'; };

Compilation message (stderr)

nautilus.cpp: In function 'int main()':
nautilus.cpp:20:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   20 |         freopen("MAIN.INP", "r", stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
nautilus.cpp:21:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   21 |         freopen("MAIN.OUT", "w", stdout);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...