Submission #1117087

#TimeUsernameProblemLanguageResultExecution timeMemory
1117087SofiatpcLand of the Rainbow Gold (APIO17_rainbow)C++14
0 / 100
1 ms2384 KiB
#include <bits/stdc++.h> #include "rainbow.h" using namespace std; int marc[5][200005], f; vector< int > vl,vr; void init(int r, int c, int sr, int sc, int m, char *s) { for(int i = 0; i < m; i++){ if(s[i] == 'N')sr--; else if(s[i] == 'S')sr++; else if(s[i] == 'W')sc--; else sc++; marc[sr][sc] = 1; } int l = 0; for(int i = 1; i <= c; i++){ if(marc[1][i] == 1 && marc[2][i] == 1 && l == 0)l = i; else if((marc[1][i] == 0 || marc[2][i]==0) && l != 0){ vl.push_back(l); vr.push_back(i-1); l = 0; } } if(l != 0){ vl.push_back(l); vr.push_back(c-1); } if((int)vl.size() == 0){ int l = 0; for(int i = 1; i <= c; i++){ if(marc[1][i] == 1){ if(l == 0)l = i; f = 1; } if(marc[2][i] == 1){ if(l == 0)l = i; f = 2; } if(f!=0 && marc[f][i] == 0){ vl.push_back(l); vr.push_back(i-1); l = 0; } } if(l!=0){ vl.push_back(l); vr.push_back(c-1); } } } int colour(int ar, int ac, int br, int bc) { if(f){ if(ar != br)return 1; if(ar != f)return 1; if(ac < vl[0] && vr[0] < bc)return 2; return 1; } int idl = lower_bound(vl.begin(),vl.end(), ac)-vl.begin(); int idr = upper_bound(vr.begin(),vr.end(), bc)-vr.begin(); if(idl == (int)vl.size() || idr == 0)return 1; idr--; int ans = idr-idl; if(ac < vl[idl])ans++; if(vr[idr] < bc)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...