제출 #476920

#제출 시각아이디문제언어결과실행 시간메모리
476920Drew_Xylophone (JOI18_xylophone)C++17
0 / 100
1 ms292 KiB
#include "xylophone.h"
#include <bits/stdc++.h>
using namespace std;

static int a[5069];
void solve(int n)
{
	int l = 1, r = n-1;
	while (l < r)
	{	
		int mid = (l + r + 1) >> 1;
		if (query(mid, n) == n-1) l = mid;
		else r = mid - 1;
	}

	a[l] = 1;
	for (int i = l-1, prv = 0; i >= 1; --i)
	{
		int x = query(i, l);
		if (x > prv) a[i] = x+1;
		prv = x;
	}

	for (int i = l-1, prv = l; i >= 1; --i)
	{
		if (a[i]) prv = i;
		else a[i] = a[prv] - query(i, prv);
	}	

	for (int i = l+1, prv = 0; i <= n; ++i)
	{
		int x = query(l, i);
		if (x > prv) a[i] = x+1;
		prv = x;
	}

	for (int i = l+1, prv = l; i <= n; ++i)
	{
		if (a[i]) prv = i;
		else a[i] = a[prv] - query(prv, i);
	}

	for (int i = 1; i <= n; ++i)
		cerr << a[i] << " \n"[i == n];

	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...