Submission #795992

#TimeUsernameProblemLanguageResultExecution timeMemory
795992boyliguanhanComparing Plants (IOI20_plants)C++17
5 / 100
66 ms11092 KiB
#include "plants.h" #include <bits/stdc++.h> using namespace std; #define N 200100 int n; int pos[N], loc[N], cnt; deque<int> R; int info[200100][2]; void init2(vector<int> r) { R.resize(n=r.size()); iota(R.begin(), R.end(), 0); for(int i = 0; i < n; i++) if(r[R.front()] == r[R.back()]) R.push_back(R.front()),R.pop_front(); else break; for(int i = 0; i < n; i++) loc[R[i]] = i; info[R.front()][0] = 0; info[R.front()][1] = r[R.front()]; int prev = R.front(); R.pop_front(); for(int i = 1; i < n; i++) { info[R.front()][1] = r[R.front()]; if(r[R.front()]!=r[prev]) { info[R.front()][0] = ++cnt; } else { info[R.front()][0] = info[prev][0]; } prev = R.front(); R.pop_front(); } return; } void init(int k, vector<int> r) { int x = k; x = x+1; init2(r); } int compare_plants(int x, int y) { bool ans2=0; if(loc[x]>loc[y]) ans2=1,swap(x,y); if(loc[x]==0) if(info[y][0]==info[n-1][0]) ans2^=1,swap(x,y); bool a = info[x][0] == info[y?y-1:n-1][0]; if(!a) return 0; return (ans2^info[x][1]?-1: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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...