Submission #551798

#TimeUsernameProblemLanguageResultExecution timeMemory
551798QwertyPiXylophone (JOI18_xylophone)C++14
0 / 100
1 ms256 KiB
#include "xylophone.h"
#include <bits/stdc++.h>
static int A[5000];
int d[5000], sg[5001];
using namespace std;
void solve(int N) {
	for(int i = 1; i <= N - 1; i++){
		d[i] = query(i, i + 1);
	}
	sg[1] = 1;
	int cur_val = d[1];
	for(int i = 2; i <= N - 1; i++){
		int val = query(1, i + 1);
		if(abs(cur_val + d[i]) == val){
			sg[i] = 1;
			cur_val += d[i];
		}else{
			sg[i] = -1;
			cur_val -= d[i];
		}
	}
	A[1] = 1;
	for(int i = 2; i <= N; i++){
		A[i] = A[i - 1] + d[i - 1] * sg[i - 1];
	}
	
	int mn = N + 1;
	for(int i = 1; i <= N; i++){
		mn = min(A[i], mn);
	}
	for(int i = 1; i <= N; i++){
		A[i] += 1 - mn;
	}
	
	if(A[1] > A[N]){
		for(int i = 1; i <= N; i++){
			A[i] = N + 1 - i;
		}
	}
 
	for(int i = 1; i <= N; i++) {
		answer(i, A[i]);
	}
 
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...