QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#569228 | #9308. World Cup | yylx | WA | 0ms | 3836kb | C++14 | 1.9kb | 2024-09-16 21:24:12 | 2024-09-16 21:24:13 |
Judging History
answer
#include <iostream>
#include <vector>
#include <cmath> // 为了使用 log2 和 floor
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int t; // 测试用例数量
cin >> t;
while (t--) {
vector<int> strength(32);
int a1; // 中国队的实力值
for (int i = 0; i < 32; ++i) {
cin >> strength[i];
}
a1 = strength[0];
// 计算比中国队实力强的球队数量 s
int s = 0;
for (int i = 1; i < 32; ++i) {
if (strength[i] > a1) {
++s;
}
}
int result;
// 计算中国队小组中比自己强的最少球队数量
int min_stronger_in_group = max(0, s - 28);
if (min_stronger_in_group >= 2) {
result = 32; // 无法晋级淘汰赛
} else {
// 计算淘汰赛中剩余的比自己强的球队数量
int s_prime = max(0, s - 16); // 小组赛最多淘汰 16 支比自己强的球队
if (s_prime == 0) {
result = 1; // 中国队赢得冠军
} else {
// 计算中国队将在第几轮遇到比自己强的球队
int r = (int)floor(log2(s_prime)) + 1;
switch (r) {
case 1:
result = 2; // 决赛输
break;
case 2:
result = 4; // 半决赛输
break;
case 3:
result = 8; // 8 强输
break;
default:
result = 16; // 16 强输
break;
}
}
}
cout << result << '\n';
}
return 0;
}
详细
Test #1:
score: 100
Accepted
time: 0ms
memory: 3836kb
input:
1 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
output:
1
result:
ok 1 number(s): "1"
Test #2:
score: -100
Wrong Answer
time: 0ms
memory: 3832kb
input:
32 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 2 1 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 3 1 2 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 4 1 2 3 5 6 7 8 9 10 11 12 13 14 15 ...
output:
32 32 16 16 16 16 16 16 8 8 8 8 4 4 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
result:
wrong answer 7th numbers differ - expected: '8', found: '16'