Submission #1159017

#TimeUsernameProblemLanguageResultExecution timeMemory
1159017thelegendary08Xylophone (JOI18_xylophone)C++17
100 / 100
26 ms492 KiB
#include "xylophone.h"
#include<bits/stdc++.h>
using namespace std;
static int A[5000];
void solve(int N) {
	vector<int>v;
	for(int i = 1; i<N; i++){
		v.push_back(query(i, i+1));
	}
	//for(auto u : v)cout<<u<<' ';
	//cout<<'\n';
	vector<int>w;
	for(int i = 1; i<N-1; i++){
		w.push_back(query(i, i+2));
	}

	vector<int>sgn(N-1, 1);
	for(int i = 0; i<N-2; i++){
		if(w[i] == v[i] + v[i+1])sgn[i+1] = sgn[i];
		else sgn[i+1] = -sgn[i];
	}
    //for(auto u : sgn)cout<<u<<' ';
    //cout<<'\n';
	vector<int> nums(N);
	for(int i = 1; i<N; i++){
		if(sgn[i-1] == 1){
			nums[i] = nums[i-1] + v[i-1];
		}
		else nums[i] = nums[i-1] - v[i-1];
	}
    //for(auto u : nums)cout<<u<<' ';
    //cout<<'\n';
	int mxd = 0;
	int mx = -1;
	int mnd = 0;
	int mn = 1e9;
	for(int i = 0; i<N; i++){
		if(nums[i] < mn){
			mn = nums[i];
			mnd = i;
		}
		if(nums[i] > mx){
			mx = nums[i];
			mxd = i;
		}
	}
	if(mnd > mxd){
		for(int i = 0; i<N-1; i++)sgn[i] = -sgn[i];
	}
	nums[0] = 0;
	for(int i = 1; i<N; i++){
		if(sgn[i-1] == 1){
			nums[i] = nums[i-1] + v[i-1];
		}
		else nums[i] = nums[i-1] - v[i-1];
	}
	mxd = 0;
	mx = -1;
	mnd = 0;
	mn = 1e9;
	for(int i = 0; i<N; i++){
		if(nums[i] < mn){
			mn = nums[i];
			mnd = i;
		}
		if(nums[i] > mx){
			mx = nums[i];
			mxd = i;
		}
	}
	for(int i = 0; i<N; i++){
		nums[i] -= mn;
		nums[i]++;
	}
    for(int i = 0;i<N;i++){
        //cout<<nums[i]<<' ';
    }
   // cout<<'\n';
	for(int i = 1; i <= N; i++) {
		answer(i, nums[i-1]);
	}

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