제출 #1252479

#제출 시각아이디문제언어결과실행 시간메모리
1252479keremXylophone (JOI18_xylophone)C++20
100 / 100
26 ms472 KiB
#include "xylophone.h"
#include <bits/stdc++.h>
using namespace std;
void solve(int N) {
	int a[N];
	for(int i=1;i<N;i++)
		a[i]=query(i,i+1);
	for(int i=1;i<N-1;i++){
		int t=query(i,i+2);
		if(t==abs(a[i])+a[i+1])
			a[i+1]*=a[i]>0?1:-1;
		else
			a[i+1]*=a[i]>0?-1:1;
	}
	int k1=0,k2=0,cev1[N+1],cev2[N+1];
	cev1[1]=cev2[1]=0;
	for(int i=2;i<=N;i++){
		cev1[i]=cev1[i-1]+a[i-1];
		cev2[i]=cev2[i-1]-a[i-1];
		k1=min(k1,cev1[i]);
		k2=min(k2,cev2[i]);
	}
	int bas,son;
	for(int i=1;i<=N;i++){
		if(cev1[i]-k1+1==1) bas=i;
		if(cev1[i]-k1+1==N) son=i;
	}
	
	if(bas<son){
		for(int i=1;i<=N;i++)
			answer(i,cev1[i]-k1+1);
	}
	else{
		for(int i=1;i<=N;i++)
			answer(i,cev2[i]-k2+1);
	}
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...