Submission #73449

#TimeUsernameProblemLanguageResultExecution timeMemory
73449FedericoSLand of the Rainbow Gold (APIO17_rainbow)C++14
0 / 100
4 ms804 KiB
#include <iostream> #include <queue> #include <set> #include "rainbow.h" using namespace std; bool B[2][100005]; bool V[2][100005]; int R,C; int rmov[]={1,-1,0,0}; int cmov[]={0,0,1,-1}; queue<pair<int,int>> Q; set<pair<int,int>> S[3]; void init(int R_, int C_, int sr, int sc, int M, char *W) { R=R_; C=C_; B[sr][sc]=true; int cont=0; for(int i=0;i<M;i++){ if(W[i]=='S') sr++; if(W[i]=='N') sr--; if(W[i]=='E') sc++; if(W[i]=='W') sc--; B[sr][sc]=true; } for(int r=1;r<R+1;r++) for(int i=1;i<C+1;i++) if(B[r][i] and !B[r][i-1]) S[r].insert({cont,i}); else if(!B[r][i] and B[r][i-1]) S[r].insert({cont++,i}); for(int i=1;i<C+1;i++) if((B[0][i]|B[1][i]) and !(B[0][i-1]|B[1][i-1])) S[2].insert({cont,i}); else if(!(B[0][i]|B[1][i]) and (B[0][i-1]|B[1][i-1])) S[2].insert({cont++,i}); } int colour(int ar, int ac, int br, int bc) { int k; if(ar==0 and br==0) k=0; if(ar==1 and br==1) k=1; if(ar==0 and br==1) k=2; return (*(S[k].lower_bound({ac,-1}))).second-(*(--S[k].lower_bound({bc+1,-1}))).second+1; }
#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...