Submission #444582

#TimeUsernameProblemLanguageResultExecution timeMemory
444582KhizriXylophone (JOI18_xylophone)C++17
0 / 100
9 ms320 KiB
#include "xylophone.h"
#include <bits/stdc++.h>
using namespace std;
static int A[5000];
int arr[105][105];
void solve(int n) {
	int k=1000,a=0,b=0;
	for(int i=1;i<=n;i++){
		for(int j=i+1;j<=n;j++){
			arr[i][j]=query(i,j);
			if(arr[i][j]==n-1){
				if(k>j-i){
					k=j-i;
					a=i;
					b=j;
				}
			}
		}
	}
	A[a]=1;
	A[b]=n;
	map<int,bool>mp;
	mp[1]=true;
	mp[n]=true;
	for(int i=a;i>1;i--){
		int l=A[i]+arr[i-1][i];
		int r=A[i]-arr[i-1][i];
		if(1<l&&l<n&&!mp[l]){
			A[i-1]=l;
			mp[l]=true;
		}
		else{
			A[i-1]=r;
			mp[r]=true;
		}
	}
	for(int i=a;i<b-1;i++){
		int l=A[i]+arr[i][i+1];
		int r=A[i]-arr[i][i+1];
		if(1<l&&l<n&&!mp[l]){
			A[i+1]=l;
			mp[l]=true;
		}
		else{
			A[i+1]=r;
			mp[r]=true;
		}
	}
	for(int i=b;i<n;i++){
		int l=A[i]+arr[i][i+1];
		int r=A[i]-arr[i][i+1];
		if(1<l&&l<n&&!mp[l]){
			A[i+1]=l;
			mp[l]=true;
		}
		else{
			A[i+1]=r;
			mp[r]=true;
		}
	}
	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...