Submission #1320170

#TimeUsernameProblemLanguageResultExecution timeMemory
1320170dibamboo23Comparing Plants (IOI20_plants)C++20
0 / 100
0 ms332 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];

void init(int k, vector<int>inr) {
	n=(int)inr.sz;
	for(int i=0;i<n;i++)r[i]=r[i+n]=inr[i];
	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]<<"\n";
	return;
}

// 0 -  > 
// 1 -  <

int compare_plants(int x, int y) {
	if(x==y)return 0;
	bool t=0;
	if(x>y)t=1,swap(x,y);
	int res=-1;
	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=0;
	if(res!=-1&&t)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...