QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#557911 | #5095. 九王唱 | syxsyx | 0 | 1ms | 4116kb | C++14 | 1.0kb | 2024-09-11 12:15:32 | 2024-09-11 12:15:33 |
answer
#include<bits/stdc++.h>
using namespace std;
const int N=5005;
int n,seed;
int a[N*2][N];
void gen(int n,int seed){
std::mt19937 rnd(seed);
for(int i=1;i<=n;++i){
for(int j=1;j<=n+1;++j){
a[i][j]=j;
std::swap(a[i][j],a[i][rnd()%j+1]);
}
}
}
int ans[N];
int del[N];
int tmp[N];
int tag[N];
int srt[N];
void update(int x)
{
for(int i=1;i<=n+1;i++) srt[a[x][i]]=i;
memset(tag,0,sizeof(tag));
int now=n+1;
tmp[1]=srt[now];
for(int i=1;i<=n;i++)
{
tag[del[i]]=1;
while(tag[srt[now]]==1) now--;
if(i<n) tmp[i+1]=srt[now];
}
memcpy(del,tmp,sizeof(del));
if(x<=n) for(int i=1;i<=n+1;i++) if(!tag[i]) ans[x]=i;
// printf("%d %d:",x,ans[x]);
// for(int i=1;i<=n;i++) printf("%d ",del[i]);
// printf("\n");
}
int main()
{
scanf("%d%d",&n,&seed);
if(seed) gen(n,seed);
else
{
for(int i=1;i<=n;i++)
for(int j=1;j<=n+1;j++) scanf("%d",&a[i][j]);
}
for(int i=1;i<=n;i++) memcpy(a[n+i],a[i],sizeof(a[n+i]));
for(int i=n*2;i>=1;i--) update(i);
for(int i=1;i<=n;i++) printf("%d ",ans[i]);
printf("\n");
}
详细
Subtask #1:
score: 0
Wrong Answer
Test #1:
score: 0
Wrong Answer
time: 1ms
memory: 4116kb
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:
2 2 2 2 2 2 2 2
result:
wrong answer 1st numbers differ - expected: '5', found: '2'
Subtask #2:
score: 0
Skipped
Dependency #1:
0%
Subtask #3:
score: 0
Skipped
Dependency #1:
0%
Subtask #4:
score: 0
Skipped
Dependency #1:
0%