Submission #496442

#TimeUsernameProblemLanguageResultExecution timeMemory
496442ergaganNautilus (BOI19_nautilus)C++17
29 / 100
1077 ms1136 KiB
//я так много думал, что опять попал #include <bits/stdc++.h> #define all(x) x.begin(),x.end() #define pb push_back #define ppb pop_back #define pf push_front #define ppf pop_front #define f first #define s second #define left(v) v + v #define right(v) v + v + 1 #define ub upper_bound #define lb lower_bound using namespace std; typedef long long ll; //17 SEVENTEEN const long double Pi = acos(-1.0); const ll dx[] = {0,0,1,-1}; const ll dy[] = {1,-1,0,0}; const ll N = (ll) 1e6 + 17; const ll M = (ll) 5e3 + 69; const ll inf = (ll) 1e14 + 3; const ll mod = (ll) 1e9 + 7; ll sq(ll x) { return x * x; } ll zxc = 1, n, m, sz, ans, bl[M][M]; string s; char a[M][M]; void go(ll x, ll y, ll pos) { if(x < 1 || x > n || y < 1 || y > m || a[x][y] == '#') return; if(pos > sz) { bl[x][y] = 1; return; } if(s[pos] == 'W' || s[pos] == '?') go(x, y - 1, pos + 1); if(s[pos] == 'E' || s[pos] == '?') go(x, y + 1, pos + 1); if(s[pos] == 'N' || s[pos] == '?') go(x - 1, y, pos + 1); if(s[pos] == 'S' || s[pos] == '?') go(x + 1, y, pos + 1); } void solve() { cin >> n >> m >> sz; for(ll i = 1; i <= n; i++) { for(ll j = 1; j <= m; j++) { cin >> a[i][j]; } } cin >> s; s = " " + s; for(ll i = 1; i <= n; i++) { for(ll j = 1; j <= m; j++) { if(a[i][j] != '#') go(i, j, 1); } } for(ll i = 1; i <= n; i++) { for(ll j = 1; j <= m; j++) { ans += bl[i][j]; // cout << (bl[i][j] ? '1' : a[i][j]) << " "; } // cout << "\n"; } cout << ans << "\n"; } /* 5 9 7 ...##.... ..#.##..# ..#....## .##...#.. ....#.... WSWEENN */ int main(/*Уверенно*/) { ios_base::sync_with_stdio(0); cin.tie(0); /* freopen(".in", "r", stdin); freopen(".out", "w", stdout); */ // cin >> zxc; while(zxc--) { solve(); } return 0; } // さよならさ いかなくちゃ
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...