QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#771039 | #9557. Temperance | Mine_King# | WA | 3ms | 13404kb | C++14 | 1.7kb | 2024-11-22 08:59:05 | 2024-11-22 08:59:06 |
Judging History
answer
// 長い夜の終わりを信じながら
// Think twice, code once.
#include <set>
#include <vector>
#include <cstdio>
#include <string>
#include <cstring>
#include <iostream>
#include <algorithm>
#define eputchar(c) putc(c, stderr)
#define eprintf(...) fprintf(stderr, __VA_ARGS__)
#define eputs(str) fputs(str, stderr), putc('\n', stderr)
using namespace std;
int T, n, dlt[100005];
int a[100005][3];
int cnt[100005][3];
vector<int> vec[100005][3];
set<pair<int, int>> s[3];
int getval(int id) {return max({cnt[a[id][0]][0], cnt[a[id][1]][1], cnt[a[id][2]][2]}) - 1;}
int main() {
scanf("%d", &T);
while (T--) {
scanf("%d", &n);
for (int i = 1; i <= n; i++) {
dlt[i] = 0;
for (int j = 0; j < 3; j++) {
scanf("%d", &a[i][j]);
s[j].erase({cnt[a[i][j]][j], a[i][j]});
s[j].emplace(++cnt[a[i][j]][j], a[i][j]);
vec[a[i][j]][j].push_back(i);
}
}
int ans = 0;
for (int i = 0; i < n; i++) {
// eprintf("k = %d\n", i);
while (1) {
int x = -1;
for (int j = 0; j < 3; j++)
if (!s[j].empty() && s[j].begin()->first <= i) {x = j; break;}
if (x == -1) break;
int id = s[x].begin()->second;
s[x].erase(s[x].begin());
for (int j : vec[id][x])
if (!dlt[j] && getval(j) < i) {
ans++;
dlt[j] = 1;
// eprintf("dlt: %d\n", j);
for (int k = 0; k < 3; k++) {
int flag = s[k].count({cnt[a[j][k]][k], a[j][k]});
s[k].erase({cnt[a[j][k]][k], a[j][k]});
cnt[a[j][k]][k]--;
if (flag) s[k].emplace(cnt[a[j][k]][k], a[j][k]);
}
}
vec[id][x].clear();
}
printf("%d ", ans);
}
puts("");
}
return 0;
}
詳細信息
Test #1:
score: 100
Accepted
time: 3ms
memory: 11812kb
input:
2 5 1 1 1 1 1 2 1 1 3 2 3 5 2 2 4 3 1 1 1 2 2 2 3 3 3
output:
0 0 2 5 5 0 3 3
result:
ok 8 numbers
Test #2:
score: -100
Wrong Answer
time: 3ms
memory: 13404kb
input:
16 1 1 1 1 2 1 1 1 1 1 100000 3 1 1 1 1 1 100000 1 100000 1 4 1 1 1 1 1 100000 1 100000 1 1 100000 100000 5 1 1 1 1 1 100000 1 100000 1 1 100000 100000 100000 1 1 6 1 1 1 1 1 100000 1 100000 1 1 100000 100000 100000 1 1 100000 1 100000 7 1 1 1 1 1 100000 1 100000 1 1 100000 100000 100000 1 1 100000 ...
output:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
result:
wrong answer 14th numbers differ - expected: '1', found: '0'