Submission #1250417

#TimeUsernameProblemLanguageResultExecution timeMemory
12504173m17Nautilus (BOI19_nautilus)C++20
0 / 100
1 ms576 KiB
#include<bits/stdc++.h> using namespace std; #define endl '\n' #define fi first #define pb push_back #define se second #define TASK TASK #define ii pair<int,int> #define int long long const int Nmax = 501; const int MOD = 1000000007; const int YeuQua = 30058; const int MASK = (25 >> 1) + 5; const int SQRT = sqrt(Nmax); int n , m , z; char x; bitset <250025> dp , water; /* 5 9 7 ...#.#... ..#.##... ..#...## .#.#.#.. ....#... WS?EE?? */ /* R , C <= 500 , M <= 1000 Ta sẽ trải mảng 2 chiều ra thành 1 dãy bit với phần tử thứ i bằng 1 nếu ô đó có thể có submarine ở thao tác này, ngược lại là 0. -> Đi W: dp << 1 -> Đi E: dp >> 1 -> Đi N: dp << n -> Đi S: dp >> n 00110 W 01100 */ main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> n >> m >> z; for (int i = 0 ; i < n ; i++) for (int j = 0 ; j < m ; j++) { cin >> x; if(x == '.') water[i * n + j] = 1; } string s; dp = water; cin >> s; for (int i = 0 ; i < s.size() ; i++) { if(s[i] == '?') dp = (dp << 1) | (dp >> 1) | (dp << n) | (dp >> n); if(s[i] == 'W') dp = (dp >> 1); if(s[i] == 'E') dp = (dp << 1); if(s[i] == 'N') dp = (dp >> n); if(s[i] == 'S') dp = (dp << n); dp &= water; } cout << dp.count(); }

Compilation message (stderr)

nautilus.cpp:45:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   45 | main()
      | ^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...