Submission #819836

#TimeUsernameProblemLanguageResultExecution timeMemory
819836Abrar_Al_SamitComparing Plants (IOI20_plants)C++17
5 / 100
75 ms10220 KiB
#include <bits/stdc++.h> #include "plants.h" using namespace std; const int nax = 2e5 + 2; int n, k; int head[nax][2], pos[nax][2]; void init(int K, vector<int> r) { k = K; n = r.size(); memset(head, -1, sizeof head); int p = -1; for(int i=0; i<n; ++i) { int pr = (i - 1 + n) % n; if(!r[pr] && r[i]) { //down p = i; break; } } assert(p!=-1); int st = p; while(1) { int j = p; pos[p][0] = 1; head[p][0] = p; int at = 1; while(r[j]) { j = (j+1)%n; head[j][0] = p; pos[j][0] = ++at; } p = j; head[p][1] = p; pos[p][1] = 1; at = 1; while(!r[j]) { j = (j+1)%n; head[j][1] = p; pos[j][1] = ++at; } if(j==st) break; p = j; } } int compare_plants(int x, int y) { if(head[x][0] == head[y][0] && head[x][0] != -1) { return (pos[x][0] < pos[y][0]) ? -1 : 1; } if(head[x][1] == head[y][1] && head[x][1] != -1) { return (pos[x][1] > pos[y][1]) ? -1 : 1; } return 0; }
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...