Submission #1141577

#TimeUsernameProblemLanguageResultExecution timeMemory
1141577Noproblem29Xylophone (JOI18_xylophone)C++20
100 / 100
26 ms460 KiB
#include "xylophone.h"
#include <bits/stdc++.h>
using namespace std;
#define ll long long
static int A[5000];
int b[5005];
int e[5005];
int c[5005];
int d[5005];
void solve(int n) {
	for(int i=1;i+1<=n;i++){
		c[i]=query(i,i+1);
	}
	for(int i=1;i+2<=n;i++){
		d[i]=query(i,i+2);
	}
	b[2]=c[1];
	int up=1;
	for(int i=3;i<=n;i++){
		if(c[i-2]+c[i-1]!=d[i-2]){
			up*=-1;
		}
		b[i]=b[i-1]+c[i-1]*up;
	}
	pair<int,int>mn,mx;
	mn={0,1};
	mx={0,1};
	for(int i=1;i<=n;i++){
		mn=min(mn,make_pair(b[i],i));
		mx=max(mx,make_pair(b[i],i));
	}
	if(mn.second<mx.second){
		for(int i=1;i<=n;i++){
			answer(i,b[i]-mn.first+1);
		}
	}
	else{
		for(int i=1;i<=n;i++){
			answer(i,mx.first-b[i]+1);
		}
	}

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