Submission #1339354

#TimeUsernameProblemLanguageResultExecution timeMemory
1339354hackstar비밀 (JOI14_secret)C++20
100 / 100
341 ms8316 KiB
#include<bits/stdc++.h>
#include "secret.h"
using namespace std;

int a[1001],have[1001][1001];

int n;

void dc(int l,int r)
{
	if(l==r)
		return;
	int m=l+r>>1;
	for(int i=m-1;i>=l;--i)
		have[i][m]=Secret(a[i],have[i+1][m]);
	for(int i=m+2;i<=r;++i)
		have[m+1][i]=Secret(have[m+1][i-1],a[i]);
	dc(l,m);
	dc(m+1,r);
}

void Init(int N, int A[]) 
{
	memset(have,-1,sizeof(have));
	n=N;
	for(int i=0;i<n;++i)
		a[i]=A[i];
	for(int i=0;i<n;i++)
		have[i][i]=a[i];
	dc(0,n-1);
}

int Query(int L,int R) 
{
	if(~have[L][R])
		return have[L][R];
	int id=L;
	for(int i=L;i<R;++i)
		if((~have[L][i]) && (~have[i+1][R]))
		{
			id=i;
			break;
		}
	if(have[L][id]==-1 || have[id+1][R]==-1)
	{
		cout<<L<<' '<<id<<' '<<have[L][id]<<'\n';
		cout<<id<<' '<<R<<' '<<have[id+1][R]<<'\n';
		return 1;
	}
	return Secret(have[L][id],have[id+1][R]);
}

// g++ -O2 -std=c++11 -o grader grader.cpp secret.cpp
#Verdict Execution timeMemoryGrader output
Fetching results...