# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
1236047 | stanirina | Comparing Plants (IOI20_plants) | C++20 | 0 ms | 0 KiB |
#include <bits/stdc++.h>
#include "plants.h"
vector<int> v;
vector<int> rc;
int nn;
int kk;
void init(int k, std::vector<int> r) {
kk=k;
nn=r.size();
rc.resize(nn*2);
v.resize(nn,0);
for(int i=0;i<nn;i++)rc[i]=rc[i+nn]=r[i];
//for(int i=0;i<2*nn;i++)cout<<rc[i]<<' ';
//cout<<endl;
for(int i=nn;i<2*nn;i++){
if(rc[i]==rc[i-1])v[nn-1]++;
else break;
}
//cout<<v[n-1]<<endl;
for(int i=nn-2;i>=0;i--){
if(rc[i]==rc[i+1])v[i]=v[i+1]+1;
else v[i]=0;
}
//for(int i=0;i<n;i++)cout<<v[i]<<' ';
//cout<<endl;
return;
}
int compare_plants(int x, int y) {
//cout<<v[x]<<' '<<v[y]<<endl;
if(x+v[x]>=y){
if(rc[x]==1)return -1;
else return 1;
}
if((y+v[y])>=nn && (y+v[y])%nn>=x){
if(rc[y]==1)return 1;
else return -1;
}
return 0;
}