QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#574592 | #9308. World Cup | yylx | WA | 1ms | 3620kb | C++14 | 2.2kb | 2024-09-18 23:08:08 | 2024-09-18 23:08:08 |
Judging History
answer
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
int t;
cin >> t;
while (t--) {
vector<int> strengths(32);
for (int i = 0; i < 32; ++i) {
cin >> strengths[i];
}
// Ensure China (team 1) has the highest strength
if (strengths[0] != *max_element(strengths.begin(), strengths.end())) {
cout << 32 << endl; // China can't even qualify if not the strongest
continue;
}
// Arrange the groups to guarantee China's advancement
sort(strengths.begin() + 1, strengths.end(), greater<int>()); // Sort remaining teams in descending order
// Simulate the knockout stage
int chinaPosition = 0; // Track China's position in the knockout stage
for (int round = 1; round <= 4; ++round) { // 4 rounds: Ro16, QF, SF, Final
int numMatches = 16 / (1 << (round - 1)); // Number of matches in this round
for (int match = 0; match < numMatches; ++match) {
int opponentPosition = (match % 2 == 0) ? (numMatches + match) : (match - 1);
// Determine opponent based on match number
if (chinaPosition == match) {
if (strengths[opponentPosition] > strengths[chinaPosition]) {
cout << (1 << (round - 1)) << endl; // China loses, output result based on round
goto nextTestCase;
}
} else if (chinaPosition == opponentPosition) {
if (strengths[match] > strengths[chinaPosition]) {
cout << (1 << (round - 1)) << endl;
goto nextTestCase;
}
}
// Update chinaPosition if they won
if (chinaPosition == match || chinaPosition == opponentPosition) {
chinaPosition = match / 2; // Advance to the next round
}
}
}
cout << 1 << endl; // China wins the championship
nextTestCase:
continue;
}
return 0;
}
详细
Test #1:
score: 100
Accepted
time: 0ms
memory: 3596kb
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: 1ms
memory: 3620kb
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 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 1
result:
wrong answer 3rd numbers differ - expected: '16', found: '32'