제출 #995970

#제출 시각아이디문제언어결과실행 시간메모리
995970cowwycowXylophone (JOI18_xylophone)C++14
100 / 100
67 ms996 KiB
#include <bits/stdc++.h>
#include "xylophone.h"
using namespace std;
#define name "aaaaaa"
using ll = long long;
using pii = pair<ll, ll>;
 
void file(){
}
 
const int maxn = 1e4 + 5;
ll a[maxn], type[maxn], out[maxn];
 
void solve (int n){
	a[2] = query(1, 2);
	type[2] = 0;
	ll last = a[2];
	for(int i = 3; i <= n; i++){
		ll q = query(i - 1, i), sus = query(i - 2, i);
		a[i] = q;
		if(last + q == sus){
			type[i] = type[i - 1];
		}else{
			type[i] = !type[i - 1];
		}
		last = q;
	}
	for(int i = 1; i <= n; i++){
		out[i] = out[i - 1] + a[i] * (-type[i] * 2 + 1);
	}
	int maxpos = 1, minpos = 1;
	for(int i = 2; i <= n; i++){
		if(out[maxpos] < out[i]){
			maxpos = i;
		}
		if(out[minpos] > out[i]){
			minpos = i;
		}
	}
	if(maxpos < minpos){
		for(int i = 1; i <= n; i++){
			type[i] = !type[i];
			out[i] = out[i - 1] + a[i] * (-type[i] * 2 + 1);
		}
	}
	ll in = 1e18;
	for(int i = 1; i <= n; i++){
		in = min(in, out[i]);
	}
	for(int i = 1; i <= n; i++){
		out[i] = out[i] - in + 1;
	}
	for(int i = 1; i <= n; i++){
		answer(i, out[i]);
	}
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...