제출 #1156749

#제출 시각아이디문제언어결과실행 시간메모리
1156749Hamed_GhaffariXylophone (JOI18_xylophone)C++20
100 / 100
26 ms476 KiB
#include "xylophone.h"
#include <bits/stdc++.h>
using namespace std;

const int MXN = 5003;

int val2[MXN], val3[MXN], dif[MXN];

void solve(int n) {
	for(int i=2; i<=n; i++) {
		dif[i] = val2[i] = query(i-1, i);
		if(i>2) val3[i] = query(i-2, i);
	}
	for(int i=3; i<=n; i++)
		if((val2[i-1]+val2[i]==val3[i])==(dif[i-1]<0))
			dif[i] *= -1;
	dif[1] = n*(n+1)/2;
	for(int i=2; i<=n; i++) dif[1] -= dif[i]*(n+1-i);
	dif[1] /= n;
	for(int i=2; i<=n; i++) dif[i] += dif[i-1];
	int pos1=-1, posn=-1;
	for(int i=1; i<=n; i++)
		if(dif[i]==1) pos1=i;
		else if(dif[i]==n) posn=i;
	if(pos1>posn) {
		for(int i=1; i<=n; i++) dif[i] = n+1-dif[i];
	}
	for(int i=1; i<=n; i++) {
		answer(i, dif[i]);
	}
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...