Submission #1327919

#TimeUsernameProblemLanguageResultExecution timeMemory
1327919ninstroyerXylophone (JOI18_xylophone)C++20
100 / 100
49 ms436 KiB
#include<bits/stdc++.h>
using namespace std;
#include "xylophone.h"

const int nx = 5e3+5;

int val[nx], mn=1;

void solve(int n) 
{
	val[1] = 1;
	int mx = query(1,2);
	val[2] = 1+mx;
	for(int i = 3; i <= n; i++)
	{
		int num1 = val[i-2];
		int num2 = val[i-1];
		int diff = query(i-1,i);
		int q = query(i-2,i);
		if(num1 < num2)
		{
			if(q==num2+diff-num1) val[i] = num2+diff;
			else val[i] = num2-diff;
		}
		else
		{
			if(q==num1-(num2-diff)) val[i] = num2-diff;
			else val[i] = num2+diff;
		}
		mn = min(mn,val[i]);
	}
	int add = 1-mn;
	for(int i = 1; i <= n; i++) val[i] += add;
	for(int i = 1; i <= n; i++)
	{
		if(val[i]==1)
		{
			for(int j = 1; j <= n; j++) answer(j,val[j]);
			break;
		}
		if(val[i]==n)
		{
			for(int j = 1; j <= n; j++) answer(j,n-val[j]+1);
			break;
		}
	}
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...