QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#422820 | #5956. Paradox Sort | 251Sec | 32 ✓ | 52ms | 3972kb | C++14 | 1.6kb | 2024-05-27 19:37:02 | 2024-05-27 19:37:03 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int T;
bool del[105];
int deg[105], e[105][105], n, a;
void Add(int u, int w) {
for (int i = 1; i <= n; i++) if (!e[u][i] && i != u) deg[i] += w;
del[u] = w != 1;
}
struct P {
int u, d;
bool operator<(const P &b) const { return d < b.d; }
} p[105];
int pC;
int C(int u, int v) { return e[u][v] ? v : u; }
bool Chk(int s) {
pC = 0;
for (int i = 1; i <= n; i++) if (!del[i]) p[++pC] = { i, deg[i] };
sort(p + 1, p + pC + 1);
bool flg = false, anyE = false;
for (int i = 1, x = 0, las = 0; i <= n; i++) {
anyE |= e[s][p[i].u];
x += p[i].d;
if (x == i * (i - 1) / 2) {
bool hasA = false;
for (int j = las + 1; j <= i; j++) hasA |= (p[j].u == a);
if (hasA) flg = true;
if (!flg) {
for (int j = las + 1; j <= i; j++) if (!e[p[j].u][s]) return false;
}
las = i;
}
}
return anyE || s == a;
}
int main() {
scanf("%d", &T);
for (int tid = 1; tid <= T; tid++) {
printf("Case #%d: ", tid);
memset(del, 0, sizeof(del));
memset(deg, 0, sizeof(deg));
int cur = 0;
scanf("%d%d", &n, &a), a++;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
char c; scanf(" %c", &c);
e[i][j] = (c == 'N');
deg[i] += e[i][j];
}
e[0][i] = true;
}
if (!Chk(0)) puts("IMPOSSIBLE");
else {
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
if (!del[j]) {
Add(j, -1);
if (Chk(C(cur, j))) {
cur = C(cur, j);
printf("%d%c", j - 1, " \n"[i == n]);
break;
}
Add(j, 1);
}
}
}
}
}
return 0;
}
详细
Subtask #1:
score: 4
Accepted
Test #1:
score: 4
Accepted
time: 1ms
memory: 3836kb
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 3 1 2 0 Case...
result:
ok 100 lines
Subtask #2:
score: 28
Accepted
Test #2:
score: 28
Accepted
time: 52ms
memory: 3972kb
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 9...
result:
ok 100 lines
Extra Test:
score: 0
Extra Test Passed