| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 | 
|---|---|---|---|---|---|---|---|
| 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;
}
