Submission #432150

#TimeUsernameProblemLanguageResultExecution timeMemory
432150peuchComparing Plants (IOI20_plants)C++17
5 / 100
100 ms5880 KiB
#include "plants.h" #include<bits/stdc++.h> using namespace std; int N; bool sub1; vector<int> esq, dir; void init(int k, vector<int> r) { sub1 = k == 2; N = r.size(); if(sub1){ esq = vector<int> (N); dir = vector<int> (N); int ini; for(ini = 0; ini < N; ini++) if(r[ini] == 0) break; ini++; ini %= N; esq[ini] = 0; for(int i = ini + 1; i != ini; i++, i %= N){ int ant = i - 1; if(ant < 0) ant += N; esq[i] = esq[ant] + 1; if(r[ant] == 0) esq[i] = 0; } for(ini = 0; ini < N; ini++) if(r[ini] == 1) break; dir[ini] = 0; for(int i = (ini + N - 1) % N; i != ini; i += N - 1, i %= N){ int nex = i + 1; if(nex >= N) nex -= N; dir[i] = dir[nex] + 1; if(r[i] == 1) dir[i] = 0; } } return; } int compare_plants(int x, int y) { if(sub1){ if(x + dir[x] >= y) return 1; if(x - esq[x] < 0 && (x + N - esq[x]) % N <= y) return 1; if(y - esq[y] <= x) return -1; if(y + dir[y] > N && (y + dir[y]) % N >= x) return -1; return 0; } 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...