Submission #134144

#TimeUsernameProblemLanguageResultExecution timeMemory
134144BoxworldXylophone (JOI18_xylophone)C++14
100 / 100
123 ms504 KiB
#include "xylophone.h"
#include <bits/stdc++.h>
using namespace std;
int a[5050][2];
void solve(int N) {
	int tmp0=query(1,2),mk=1;
	a[1][0]=N;a[2][0]=N+tmp0;
	a[1][1]=N;a[2][1]=N-tmp0;
	int Mi1=N,Mi2=N-tmp0;
	for(int i=3;i<=N;i++){
		int tmp1=query(i-1,i),tmp2=query(i-2,i);
		if (tmp0+tmp1!=tmp2)mk*=-1;
		a[i][0]=a[i-1][0]+tmp1*mk;
		if (a[i][0]<Mi1)Mi1=a[i][0];
		a[i][1]=a[i-1][1]-tmp1*mk;
		if (a[i][1]<Mi2)Mi2=a[i][1];
		tmp0=tmp1;
	}
	int alr_N=0,print=0;
	for (int i=1;i<=N;i++){
		a[i][0]-=(Mi1-1);
		if (a[i][0]==N)alr_N=1;
		if (a[i][0]==1&&alr_N==1)print=1;
		a[i][1]-=(Mi2-1);
	}
	for (int i=1;i<=N;i++)answer(i,a[i][print]);
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...