Submission #1260185

#TimeUsernameProblemLanguageResultExecution timeMemory
1260185kamradLand of the Rainbow Gold (APIO17_rainbow)C++20
0 / 100
1 ms580 KiB
#include "rainbow.h" #include <bits/stdc++.h> using namespace std; using pii = pair<int, int>; #define F first #define S second const int maxN = 2e5 + 10; int n, m; int cnt[3][maxN]; bool mark[3][maxN]; void init(int R, int C, int sr, int sc, int M, char *S) { n = R; m = C; pii cur = {sr, sc}; mark[cur.F][cur.S] = true; for(int i = 0; i < M; i++) { char c = S[i]; if(c == 'N') cur.F--; if(c == 'S') cur.F++; if(c == 'W') cur.S--; if(c == 'E') cur.S++; mark[cur.F][cur.S] = true; } mark[1][0] = true; mark[2][0] = true; for(int i = 1; i <= m; i++) { cnt[0][i] = cnt[0][i-1] + (mark[1][i-1] == 1 and mark[1][i] == 0); cnt[1][i] = cnt[1][i-1] + (mark[2][i-1] == 1 and mark[2][i] == 0); cnt[2][i] = cnt[2][i-1] + ((mark[1][i-1]&mark[1][i])|(mark[2][i-1]&mark[2][i]) == 0); } } int colour(int ar, int ac, int br, int bc) { if(ar == br) { if(ar == 1) return cnt[0][bc]-cnt[0][ac-1]+((!mark[1][ac])&(!mark[1][ac-1])); return cnt[1][bc]-cnt[1][ac-1]+((!mark[2][ac])&(!mark[2][ac-1])); } return cnt[2][bc]-cnt[2][ac-1]+(((!mark[1][ac-1])&(!mark[1][ac]))|((!mark[2][ac-1])&(!mark[2][ac]))); }
#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...