Submission #1255645

#TimeUsernameProblemLanguageResultExecution timeMemory
1255645ilhan_ardaXylophone (JOI18_xylophone)C++20
100 / 100
26 ms432 KiB
#include "xylophone.h"
#include <bits/stdc++.h>
using namespace std;

static int A[5000];

void solve(int N) {
	int a[N+5] = {0}, mn = 1;
	a[1] = 1;
	a[2] = 1 + query(1, 2);
	for(int i=3;i<=N;i++){
		int x = query(i-1, i);
		int y = query(i-2, i);
		int t1 = a[i-1] + x, t2 = a[i-1]-x;
		if(a[i-2]<a[i-1]){
			if(y == t1 - a[i-2]) a[i] = t1;
			else a[i] = t2;
		}
		else{
			if(y == a[i-2] - t2) a[i] = t2;
			else a[i] = t1;
		}
		mn = min(mn, a[i]);
	}
	int bir = -1, en = -1;
	for(int i=1;i<=N;i++){
		a[i] += 1-mn;
		if(a[i] == 1)bir = i;
		if(a[i] == N)en = i;
	}
	bool control = bir<en ? false: true;
	for(int i=1;i<=N;i++){
		int x = !control ? a[i] : N-a[i]+1;
		answer(i, x);
	}
	
	
	//~ int value = query(1, N);

	//~ for(int i = 1; i <= N; i++) {
		//~ answer(i, i);
	//~ }
  return;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...