Submission #210318

#TimeUsernameProblemLanguageResultExecution timeMemory
210318emanIaicepsaXylophone (JOI18_xylophone)C++14
100 / 100
111 ms380 KiB
#include "xylophone.h"
#include<bits/stdc++.h>
using namespace std;
//static int A[5000]//;

int arr[5005];
void solve(int N) {
	int n = N;
	arr[1] = 1;
	int val = query(1, 2);
	arr[2] = 1+val;
	
	for(int i=3;i<=n;i++){
		int dif = arr[i-2] - arr[i-1];
		if(dif < 0) dif *= -1;
		int val = query(i-2,i);
		
		if(val == dif){
			int v2 = query(i-1,i);
			if(arr[i-1] > arr[i-2]){
				arr[i] = arr[i-1] - v2;
			}
			else{
				arr[i] = arr[i-1] + v2;
			}
		}
		else{
			int v2 = query(i-1,i);
			if(arr[i-1] > arr[i-2]){
				if(v2 == val) arr[i] = arr[i-1]-v2;
				else arr[i] = arr[i-1] + v2;
			}
			else{
				if(v2 == val) arr[i] = arr[i-1]+v2;
				else arr[i] = arr[i-1] - v2;
			}
		}
	}
	/*for(int i=1;i<=n;i++){
		cout<<arr[i]<<" \n"[i==n];
	}*/ 
	int cmin = arr[1];
	for(int i=1;i<=n;i++){
		cmin = min(cmin,arr[i]);
	}
	cmin *= -1;
	int p1 = 0, pn = 0;
	for(int i=1;i<=n;i++){
		arr[i] += cmin+1;
		if(arr[i] == 1) p1 = i;
		if(arr[i] == n) pn = i;
	}
	if(p1 > pn){
		for(int i=1;i<=n;i++) arr[i] = n+1-arr[i];
	}
	/*for(int i=1;i<=n;i++){
		cout<<arr[i]<<" \n"[i==n];
	}*/
	for(int i = 1; i <= N; i++) {
		answer(i, arr[i]);
	}

}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...