# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
771763 | khshg | 카니발 티켓 (IOI20_tickets) | C++14 | 0 ms | 0 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include"plants.h"
#include<bits/stdc++.h>
using namespace std;
vector<int> know, r;
int N;
int goR = 0;
void init(int k, vector<int> _r) {
swap(r, _r);
N = (int)r.size();
for(int i = 0; i + 1 < N; ++i) {
if(r[i] != r[i + 1] && r[i + 1]) {
goR = N - 1 - i;
break;
}
}
rotate(r.begin(), r.begin()+r.size()-goR, r.end());
int cnt = 0;
for(int i = 1; i < N; ++i) {
cnt += (r[i - 1] != r[i] && r[i - 1]);
}
if(cnt == 1) {
for(int i = 0; r[i]; ++i) {
know.push_back(i);
}
for(int i = N - 1; know.size() + 1 < N; --i) {
know.push_back(i);
}
}
return;
}
int compare_plants(int x, int y) {
x += goR;
y += goR;
x %= N;
y %= N;
if((int)know.size()) {
return know[x] < know[y] ? -1 : 1;
}
if(x == 0 && y == N - 1) return r[y] ? 1 : -1;
if(y - x > 1) {
return 0;
}
return r[x] ? -1 : 1;
}