Submission #59636

#TimeUsernameProblemLanguageResultExecution timeMemory
59636dualityLand of the Rainbow Gold (APIO17_rainbow)C++11
23 / 100
2092 ms1049600 KiB
#define DEBUG 0 #include <bits/stdc++.h> using namespace std; #if DEBUG // basic debugging macros int __i__,__j__; #define printLine(l) for(__i__=0;__i__<l;__i__++){cout<<"-";}cout<<endl #define printLine2(l,c) for(__i__=0;__i__<l;__i__++){cout<<c;}cout<<endl #define printVar(n) cout<<#n<<": "<<n<<endl #define printArr(a,l) cout<<#a<<": ";for(__i__=0;__i__<l;__i__++){cout<<a[__i__]<<" ";}cout<<endl #define print2dArr(a,r,c) cout<<#a<<":\n";for(__i__=0;__i__<r;__i__++){for(__j__=0;__j__<c;__j__++){cout<<a[__i__][__j__]<<" ";}cout<<endl;} #define print2dArr2(a,r,c,l) cout<<#a<<":\n";for(__i__=0;__i__<r;__i__++){for(__j__=0;__j__<c;__j__++){cout<<setw(l)<<setfill(' ')<<a[__i__][__j__]<<" ";}cout<<endl;} // advanced debugging class // debug 1,2,'A',"test"; class _Debug { public: template<typename T> _Debug& operator,(T val) { cout << val << endl; return *this; } }; #define debug _Debug(), #else #define printLine(l) #define printLine2(l,c) #define printVar(n) #define printArr(a,l) #define print2dArr(a,r,c) #define print2dArr2(a,r,c,l) #define debug #endif // define #define MAX_VAL 999999999 #define MAX_VAL_2 999999999999999999LL #define EPS 1e-6 #define mp make_pair #define pb push_back // typedef typedef unsigned int UI; typedef long long int LLI; typedef unsigned long long int ULLI; typedef unsigned short int US; typedef pair<int,int> pii; typedef pair<LLI,LLI> plli; typedef vector<int> vi; typedef vector<LLI> vlli; typedef vector<pii> vpii; typedef vector<plli> vplli; // ---------- END OF TEMPLATE ---------- #include "rainbow.h" int r,c; int lx,rx,ly,ry; int **pre1,**pre2,**pre3,**pre4; void init(int R,int C,int sr,int sc,int M,char *S) { int i,j; r = R,c = C; pre1 = new int*[R+1]; pre2 = new int*[R+1]; pre3 = new int*[R+1]; pre4 = new int*[R+1]; for (i = 0; i <= R; i++) { pre1[i] = new int[C+1]; pre2[i] = new int[C+1]; pre3[i] = new int[C+1]; pre4[i] = new int[C+1]; for (j = 0; j <= C; j++) pre1[i][j] = pre2[i][j] = pre3[i][j] = pre4[i][j] = 0; } for (i = 1; i <= R; i++) { for (j = 1; j <= C; j++) pre1[i][j] = pre2[i][j] = pre3[i][j] = pre4[i][j] = 1; } sr--,sc--; lx = rx = sc,ly = ry = sr; pre1[sr+1][sc+1] = 0; pre2[sr+1][sc+1] = pre2[sr][sc+1] = 0; pre3[sr+1][sc+1] = pre3[sr+1][sc] = 0; pre4[sr+1][sc+1] = pre4[sr][sc+1] = pre4[sr+1][sc] = pre4[sr][sc] = 0; for (i = 0; i < M; i++) { if (S[i] == 'N') sr--; else if (S[i] == 'S') sr++; else if (S[i] == 'W') sc--; else sc++; lx = min(lx,sc),rx = max(rx,sc); ly = min(lx,sr),ry = max(ry,sr); pre1[sr+1][sc+1] = 0; pre2[sr+1][sc+1] = pre2[sr][sc+1] = 0; pre3[sr+1][sc+1] = pre3[sr+1][sc] = 0; pre4[sr+1][sc+1] = pre4[sr][sc+1] = pre4[sr+1][sc] = pre4[sr][sc] = 0; } for (i = 1; i <= R; i++) { for (j = 1; j <= C; j++) { pre1[i][j] += pre1[i-1][j]+pre1[i][j-1]-pre1[i-1][j-1]; pre2[i][j] += pre2[i-1][j]+pre2[i][j-1]-pre2[i-1][j-1]; pre3[i][j] += pre3[i-1][j]+pre3[i][j-1]-pre3[i-1][j-1]; pre4[i][j] += pre4[i-1][j]+pre4[i][j-1]-pre4[i-1][j-1]; } } } int colour(int ar,int ac,int br,int bc) { ar--,ac--,br--,bc--; int ans = 0; ans += pre1[br+1][bc+1]-pre1[ar][bc+1]-pre1[br+1][ac]+pre1[ar][ac]; ans -= pre2[br][bc+1]-pre2[ar][bc+1]-pre2[br][ac]+pre2[ar][ac]; ans -= pre3[br+1][bc]-pre3[ar][bc]-pre3[br+1][ac]+pre3[ar][ac]; ans += pre4[br][bc]-pre4[ar][bc]-pre4[br][ac]+pre4[ar][ac]; if ((ar < ly) && (br > ry) && (ac < lx) && (bc > rx)) ans++; return ans; }
#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...