제출 #763682

#제출 시각아이디문제언어결과실행 시간메모리
763682vjudge1Xylophone (JOI18_xylophone)C++17
100 / 100
94 ms428 KiB
#include <bits/stdc++.h>
#include "xylophone.h"

const int maxn = 5e3 + 5;

int arr[maxn];

void solve(int N){
	arr[2] = query(1, 2);
	bool is_up = true;
	for(int i = 3; i <= N; i++){
		int dou = query(i - 1, i);
		int tri = query(i - 2, i);
		int pre = abs(arr[i - 1] - arr[i - 2]);
		if(tri != dou + pre){
			is_up ^= 1;
		}
		if(is_up){
			arr[i] = arr[i - 1] + dou;
		}else{
			arr[i] = arr[i - 1] - dou;
		}
	}

	int pos_min = std::min_element(arr + 1, arr + N + 1) - arr;
	int pos_max = std::max_element(arr + 1, arr + N + 1) - arr;

	// for(int i = 1; i <= N; i++){
	// 	std::cout << arr[i];
	// 	if(i != N) std::cout << " ";
	// 	else std::cout << std::endl;
	// }

	if(pos_min > pos_max){
		int diff = *(std::max_element(arr + 1, arr + N + 1));
		for(int i = 1; i <= N; i++){
			answer(i, diff - arr[i] + 1);
		}
	}else{
		int diff = *(std::min_element(arr + 1, arr + N + 1));
		for(int i = 1; i <= N; i++){
			answer(i, arr[i] - diff + 1);
		}
	}
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...