Submission #363459

#TimeUsernameProblemLanguageResultExecution timeMemory
363459ThistleXylophone (JOI18_xylophone)C++14
100 / 100
126 ms624 KiB
#include "xylophone.h"

static int a[5000],b[5000];
int c[5000],d[5000];

void solve(int N) {

	int n=N;
	for(int i=0;i<n-1;i++){
		c[i]=query(i+1,i+2);
	}
	for(int i=0;i<n-2;i++){
		d[i]=query(i+1,i+3);
	}

	b[0]=c[0];
	for(int i=0;i<n-2;i++){
		if(d[i]==c[i]+c[i+1]){
			if(b[i]>0) b[i+1]=c[i+1];
			else b[i+1]=-c[i+1];
		}
		else{
			if(b[i]>0) b[i+1]=-c[i+1];
			else b[i+1]=c[i+1];
		}
	}

	for(int i=0;i<n-1;i++){
		a[i+1]=a[i]+b[i];
	}
	int mn=0,mx=0;
	for(int i=0;i<n;i++){
		if(a[mn]>a[i]) mn=i;
		if(a[mx]<a[i]) mx=i;
	}
	if(mn>mx){
		for(int i=0;i<n-1;i++){
			a[i+1]=a[i]-b[i];
		}
	}
	mn=0;
	for(int i=0;i<n;i++) if(mn>a[i]) mn=a[i];
	for(int i=0;i<n;i++) a[i]+=(1-mn);
	for(int i=0;i<n;i++) answer(i+1,a[i]); 
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...