QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#557916 | #5095. 九王唱 | syxsyx | 0 | 1ms | 4040kb | C++14 | 1.1kb | 2024-09-11 12:19:18 | 2024-09-11 12:19:19 |
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=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));
memset(tag,0,sizeof(tag));
for(int i=1;i<=n;i++) tag[del[i]]=1;
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: 8
Accepted
time: 1ms
memory: 4040kb
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:
5 5 5 5 5 5 5 5
result:
ok 8 numbers
Test #2:
score: 0
Wrong Answer
time: 1ms
memory: 4000kb
input:
8 0 4 7 8 6 1 3 2 9 5 5 8 9 7 2 4 3 1 6 6 9 1 8 3 5 4 2 7 7 1 2 9 4 6 5 3 8 8 2 3 1 5 7 6 4 9 9 3 4 2 6 8 7 5 1 1 4 5 3 7 9 8 6 2 2 5 6 4 8 1 9 7 3
output:
9 9 9 9 9 8 9 9
result:
wrong answer 1st numbers differ - expected: '7', found: '9'
Subtask #2:
score: 0
Skipped
Dependency #1:
0%
Subtask #3:
score: 0
Skipped
Dependency #1:
0%
Subtask #4:
score: 0
Skipped
Dependency #1:
0%