QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#114986 | #5956. Paradox Sort | zhouhuanyi | 32 ✓ | 69ms | 3596kb | C++11 | 1.9kb | 2023-06-24 13:12:56 | 2023-06-24 13:13:00 |
Judging History
answer
#include<iostream>
#include<cstdio>
#include<algorithm>
#define N 100
using namespace std;
int read()
{
char c=0;
int sum=0;
while (c<'0'||c>'9') c=getchar();
while ('0'<=c&&c<='9') sum=sum*10+c-'0',c=getchar();
return sum;
}
int T,n,A,cater,nw,length,in[N+1],p[N+1],q[N+1],belong[N+1];
char c[N+1][N+1];
bool used[N+1];
bool cmp(int x,int y)
{
return in[x]<in[y];
}
int get_max(int x,int y)
{
if (!x||!y) return x^y;
return (c[x][y]=='N')?y:x;
}
bool check(int x)
{
int res=0,ps=1;
if (!used[A])
{
length=0;
for (int i=1;i<=n;++i)
if (!used[i])
p[++length]=i;
sort(p+1,p+length+1,cmp);
for (int i=1;i<=length;++i)
{
res+=in[p[i]];
if (res==((i*(i-1))>>1))
{
++cater;
for (int t=ps;t<=i;++t) belong[p[t]]=cater;
ps=i+1;
}
}
for (int i=1;i<=n;++i)
if ((!x||c[x][i]=='N')&&belong[i]>belong[A])
return 0;
return 1;
}
else
{
if (get_max(nw,A)!=A) return 0;
for (int i=1;i<=n;++i)
if (!used[i]&&c[A][i]=='N')
return 0;
return 1;
}
}
int main()
{
T=read();
for (int i=1;i<=T;++i)
{
n=read(),A=read()+1,nw=0;
for (int j=1;j<=n;++j) in[j]=used[j]=0;
for (int j=1;j<=n;++j)
for (int k=1;k<=n;++k)
{
cin>>c[j][k];
if (c[j][k]=='N') in[k]++;
}
if (!check(0))
{
printf("Case #%d: IMPOSSIBLE\n",i);
continue;
}
for (int j=1;j<=n;++j)
{
for (int k=1;k<=n;++k)
if (!used[k])
{
for (int t=1;t<=n;++t)
if (!used[t]&&c[k][t]=='N')
in[t]--;
used[k]=1;
if (check(get_max(nw,k)))
{
q[j]=k;
break;
}
used[k]=0;
for (int t=1;t<=n;++t)
if (!used[t]&&c[k][t]=='N')
in[t]++;
}
nw=get_max(nw,q[j]);
}
printf("Case #%d: ",i);
for (int j=1;j<=n;++j) printf("%d ",q[j]-1);
puts("");
}
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Subtask #1:
score: 4
Accepted
Test #1:
score: 4
Accepted
time: 2ms
memory: 3596kb
input:
100 3 0 -YN N-Y YN- 2 0 -Y N- 5 0 -YNNN N-YNN YN-YN YYN-Y YYYN- 5 1 -NYYY Y-NNN NY-NY NYY-N NYNY- 6 5 -YYNNY N-YYNY NN-NYN YNY-NY YYNY-Y NNYNN- 4 0 -YYY N-YN NN-N NYY- 2 0 -Y N- 5 1 -NYNY Y-YYY NN-YY YNN-N NNNY- 7 5 -YYYYYY N-NNYYN NY-YNNN NYN-NYN NNYY-NN NNYNY-N NYYYYY- 8 0 -YNNNNNN N-YNNNNN YN-YNN...
output:
Case #1: 1 2 0 Case #2: 0 1 Case #3: 3 4 2 1 0 Case #4: 0 2 3 4 1 Case #5: 0 1 3 4 2 5 Case #6: 0 1 2 3 Case #7: 0 1 Case #8: 0 1 2 3 4 Case #9: IMPOSSIBLE Case #10: 6 7 5 4 3 2 1 0 Case #11: 0 1 2 Case #12: 0 1 Case #13: 0 1 Case #14: IMPOSSIBLE Case #15: IMPOSSIBLE Case #16: 7 8 6 5 4 ...
result:
ok 100 lines
Subtask #2:
score: 28
Accepted
Test #2:
score: 28
Accepted
time: 69ms
memory: 3544kb
input:
100 39 0 -YNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN N-YNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN YN-YNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN YYN-YNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN YYYN-YNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN YYYYN-YNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN YYYYYN-YNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN YYYYYYN-YNN...
output:
Case #1: 37 38 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 Case #2: 0 13 23 28 30 34 38 40 41 42 43 46 49 51 52 33 5 1 17 32 15 29 19 10 16 47 48 9 4 27 6 7 18 31 8 11 26 50 3 37 25 35 45 20 24 39 22 12 44 36 2 21 14 Case #3: 0 1 2 3 4 5 6 8...
result:
ok 100 lines
Extra Test:
score: 0
Extra Test Passed