Submission #619845

#TimeUsernameProblemLanguageResultExecution timeMemory
619845KLPPComparing Plants (IOI20_plants)C++14
0 / 100
1 ms212 KiB
#include "plants.h" #include<bits/stdc++.h> using namespace std; #define rep(i,a,b) for(int i=a;i<b;i++) typedef long long int lld; #define trav(a,v) for(auto a:v) int n; int K; int arr[1000000]; int order[1000000]; void init(int k, std::vector<int> r) { n=r.size(); K=k; rep(i,0,n)arr[i]=r[i]; if(2*k>n){ rep(i,0,n)order[i]=-1; int cnt=0; rep(turn,0,n){ rep(i,0,n){ if(arr[i]==0 && order[i]==-1){ order[i]=cnt; cnt++; rep(j,1,k){ arr[(i-j+n)%n]--; } } } } } return; } int trial[1000000]; bool visited[1000000]; int compare_plants(int x, int y) { if(2*K>n){ if(order[x]>order[y])return -1; return 1; } rep(i,0,n)trial[i]=arr[i]; rep(i,0,n)visited[i]=false; rep(turn,0,n+1){ rep(i,0,n){ if(i!=x && i!=y){ if(trial[i]==0 && !visited[i]){ visited[i]=true; rep(j,1,K){ trial[(i-j+n)%n]--; } if(trial[x]<0 || trial[y]<0){ rep(j,1,K){ trial[(i-j+n)%n]++; } visited[i]=false; }else{ /*cerr<<i<<endl; rep(j,0,n)cerr<<trial[j]<<" "; cerr<<endl; rep(j,0,n)cerr<<visited[j]<<" "; cerr<<endl;*/ } } } } } if(trial[x]==0 && trial[y]==0)return 0; if(trial[x]==0)return 1; //cerr<<trial[x]<<" "<<trial[y]<<endl; return -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...