Submission #1267068

#TimeUsernameProblemLanguageResultExecution timeMemory
1267068kian2009Xylophone (JOI18_xylophone)C++20
0 / 100
0 ms416 KiB
#include "xylophone.h"
#include <bits/stdc++.h>
using namespace std;

const int MAXN = 5e3 + 10;

int n, a[MAXN], x[MAXN];
bool use[MAXN];

bool findArr() {
	int mn = 0;
	for (int i = 2; i <= n; i++) {
		a[i] = a[i - 1] + x[i] * (use[i]? -1: 1);
		mn = min(mn, a[i]);
	}
	int w1 = -1, w2 = -1;
	for (int i = 1; i <= n; i++) {
		a[i] -= (mn - 1);
		if (a[i] == 1)
			w1 = i;
		else if (a[i] == n)
			w2 = i;
	}
	return ((w1 >= 1 && w2 >= 1) && w1 < w2);
}

void solve(int N) {
	/*n = N;
	if (n == 1) {
		answer(1, 1);
		return;
	}
	if (n == 2) {
		answer(1, 1);
		answer(1, 2);
		return;
	}
	for (int i = 2; i <= n; i++)
		x[i] = query(i - 1, i);
	for (int i = 3; i <= n; i++) {
		int num = query(i - 2, i);
		if (!((num == (x[i] + x[i - 1])) ^ (use[i - 1])))
			use[i] = true;
	}
	if (findArr()) {
		for (int i = 1; i <= n; i++)
			answer(i, a[i]);
		return;
	}
	for (int i = 1; i <= n; i++) {
		a[i] = 0;
		use[i] = !use[i];
	}
	findArr();*/
	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...