This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |