QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#548806#5095. 九王唱Flamire0 0ms0kbC++171.4kb2024-09-05 21:05:052024-09-05 21:05:06

Judging History

This is the latest submission verdict.

  • [2024-09-05 21:05:06]
  • Judged
  • Verdict: 0
  • Time: 0ms
  • Memory: 0kb
  • [2024-09-05 21:05:05]
  • Submitted

answer

#include <bits/stdc++.h>
using namespace std;
int n,seed,a[5011][5011],b[5011][5011],ban[5011];
int ch[10011],id[10011];
int solve(int p)
{
	// printf("==============solve(%d)\n",p);
	for(int i=1;i<=n+1;++i)ban[i]=0;
	for(int i=p-1;i;--i)
	{
		for(int j=1;j<=n+1;++j)if(!ban[b[i][j]]){ban[b[i][j]]=1;ch[i]=j;id[b[i][j]]=i;break;}
	}
	for(int i=n;i>=p;--i)
	{
		for(int j=1;j<=n+1;++j)if(!ban[b[i][j]]){ban[b[i][j]]=1;ch[i]=j;id[b[i][j]]=i;break;}
	}
	for(int i=1;i<=n+1;++i)if(!ban[i])return i;
	assert(0);
	return 0;
}
int P;
bool cmp(int a,int b)
{
	if((a>=P)!=(b>=P))return (a>=P)>(b>=P);
	return a<b;
}
int main()
{
	scanf("%d%d",&n,&seed);
	if(!seed)
	{
		for(int i=1;i<=n;++i)for(int j=1;j<=n+1;++j)scanf("%d",a[i]+j);
	}
	else
	{
		mt19937 rnd(seed);
		for(int i=1;i<=n;++i)
		{
			for(int j=1;j<=n+1;++j)
			{
				a[i][j]=j;
				swap(a[i][j],a[i][rnd()%j+1]);
			}
		}
	}
	for(int i=1;i<=n;++i)for(int j=1;j<=n+1;++j)b[i][a[i][j]]=j;
	printf("%d ",solve(1));
	for(int i=1;i<n;++i)
	{
		ban[b[i][ch[i]]]=0;
		ch[i]=1;
		int u=i,v=1;
		P=i+1;
		while(1)
		{
			if(!id[b[u][v]]||id[b[u][v]]==u){id[b[u][v]]=u,ch[u]=v;ban[b[u][v]]=1;break;}
			if(cmp(id[b[u][v]],u))
			{
				int nu=id[b[u][v]];
				id[b[u][v]]=u;
				ch[u]=v;
				u=nu;v=ch[nu]+1;
			}
			else ++v;
		}
		for(int i=1;i<=n+1;++i)if(!ban[i]){printf("%d ",i);break;}
	}
	putchar(10);
	fclose(stdin);fclose(stdout);return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Subtask #1:

score: 0
Runtime Error

Test #1:

score: 0
Runtime Error

input:

8 0
6 1 3 2 9 7 8 4 5
6 1 3 2 9 7 8 4 5
6 1 3 2 9 7 8 4 5
6 1 3 2 9 7 8 4 5
6 1 3 2 9 7 8 4 5
6 1 3 2 9 7 8 4 5
6 1 3 2 9 7 8 4 5
6 1 3 2 9 7 8 4 5

output:


result:


Subtask #2:

score: 0
Skipped

Dependency #1:

0%

Subtask #3:

score: 0
Skipped

Dependency #1:

0%

Subtask #4:

score: 0
Skipped

Dependency #1:

0%