제출 #1320176

#제출 시각아이디문제언어결과실행 시간메모리
1320176dibamboo23식물 비교 (IOI20_plants)C++20
5 / 100
51 ms9016 KiB
#include "plants.h"
#include <bits/stdc++.h>

#define ll long long
#define sz size()
#define F first 
#define S second 

using namespace std;

const int N=1e6+3;

int n;
int r[N];
int p[N];
int s[N];
int p0[N];

void init(int k, vector<int>inr) {
	n=(int)inr.sz;
	set<int>st;
	for(int i=0;i<n;i++)r[i]=r[i+n]=inr[i],st.insert(r[i]);
	assert((int)st.sz!=1);
	// for(int i=0;i<n;i++)cout<<r[i]<<" ";
	cout<<"\n";
	int cnt=0;
	for(int i=0;i<n*2;i++){
		cnt++;
		if(r[i]==0)cnt=0; // a[i] > a[i+1]
		p[i]=cnt;
	}
	cnt=0;
	for(int i=n*2-1;i>=0;i--){
		cnt++;
		if(r[i]==1)cnt=0; // a[i] < a[i+1]
		s[i]=cnt;
	}
	// for(int i=0;i<2*n;i++)cout<<i<<": "<<p[i]<<" "<<s[i]<<" "<<p0[i]<<"\n";
	return;
}

// 0 -  > 
// 1 -  <

int compare_plants(int x, int y) {
	int res=0;
	if(x+s[x]>=y||x+n-p[x+n-1]<=y)res=1;
	else if(y-p[n+y-1]<=x||y+s[y]>=x+n)res=-1;
	return res;
}
#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...