Submission #1330099

#TimeUsernameProblemLanguageResultExecution timeMemory
1330099AgageldiXylophone (JOI18_xylophone)C++20
0 / 100
0 ms412 KiB
#include "bits/stdc++.h"
#include "xylophone.h"
// #include "grader.cpp"
using namespace std;

int a[5000];
int check(int x,int y) {
	if(x > y) swap(x,y);
	return query(x, y);
}

void solve(int N) {
	int l = 1, r = N, j1 = 0, j2 = 0;
	while(l <= r) {
		int mid = (l + r) / 2;
		int q = query(1, mid);
		// cout << 1 << " " << mid << " " << q << endl;
		if(q == N - 1) {
			r = mid - 1;
			j2 = mid;
		}
		else l = mid + 1;
	}
	l = 1, r = j2;
	while(l <= r) {
		int mid = (l + r) / 2;
		int q = query(mid, j2);
		if(q == N - 1) {
			l = mid + 1;
			j1 = mid;
		}
		else r = mid - 1;
	}
	a[j1] = 1;
	a[j2] = N;
	for(int i = 1; i <= N; i++) {
		if(!a[i]) {
			int i1 = check(i, j1);
			int i2 = check(i, j2);
			a[i] = ((N + 1) + i1 - i2) / 2;
		}
		// cout << a[i] << " ";
		answer(i, a[i]);
	}
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...