社区讨论
78ac,其他RE
B3692[语言月赛202212] 打 ACM 最快乐的就是滚榜读队名了(Easy Version)参与者 1已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @mhjalxa5
- 此快照首次捕获于
- 2025/11/03 23:26 4 个月前
- 此快照最后确认于
- 2025/11/03 23:26 4 个月前
#include <cstdio>
#include <cstdlib>
using namespace std;
int name[10000];
struct team {
string teamname;
int tinum = 0;
int timeexed = 0;
int id;
bool ac[23] = {0};
int wa[23] = {0};
int fbac[23] = {0};
bool operator<(const struct team &b)const {
if (this->tinum > b.tinum) {
return true;
}
if (this->timeexed < b.timeexed) {
return true;
}
return false;
}
};
priority_queue<struct team> paihang;
struct team A[23];
map<string, int>namesi;
int main() {
int m, n, k, number = 0;
cin >> m >> n >> k;
for (int i = 0; i < k; i++) {
char ti;
int a, b, c;
string named, record;
scanf("%d:%d:%d %c", &a, &b, &c, &ti);
cin >> named;
getline(cin, record);
if (namesi.find(named) == namesi.end()) {
namesi.insert(make_pair(named, ++number));
name[namesi.find(named)->second] = number;
struct team Team;
Team.id = number;
Team.teamname = named;
A[name[namesi.find(named)->second]] = Team;
}
if (record[1] == 'A') {
if (a >= 4 && b + c > 0) {
A[name[namesi.find(named)->second]].fbac[ti - 'A'] = (a - 4) * 3600 + b * 60 + c;
} else {
A[name[namesi.find(named)->second]].ac[ti - 'A'] = true;
A[name[namesi.find(named)->second]].timeexed += (A[name[namesi.find(named)->second]].wa[ti - 'A'] * 20 + a * 60 + b);
if (c)
A[name[namesi.find(named)->second]].timeexed += 1;
A[name[namesi.find(named)->second]].tinum++;
}
} else {
if (A[name[namesi.find(named)->second]].ac[ti - 'A'] == true
|| A[name[namesi.find(named)->second]].fbac[ti - 'A'] != 0) {
} else {
++A[name[namesi.find(named)->second]].wa[ti - 'A'];
}
}
}
for (int i = 1; i <= n; i++) {
paihang.push(A[i]);
}
while (!paihang.empty()) {
if (paihang.size() == 1) {
cout << paihang.top().teamname << endl;
break;
}
struct team t1 = paihang.top();
paihang.pop();
struct team t2 = paihang.top();
paihang.pop();
cout << t1.teamname << endl;
for (int i = 0; i <= n; i++) {
if (t1.fbac[i] != 0) {
t1.timeexed += (t1.wa[i] * 20 + (t1.fbac[i] - t1.fbac[i] % 60) / 60);
t1.fbac[i] = 0;
t1.ac[i] = 1;
t1.tinum ++;
if (t1 < t2) {
paihang.push(t1);
paihang.push(t2);
goto R;
}
}
}
paihang.push(t2);
R:
;
}
}```
回复
共 1 条回复,欢迎继续交流。
正在加载回复...