QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#574592#9308. World CupyylxWA 1ms3620kbC++142.2kb2024-09-18 23:08:082024-09-18 23:08:08

Judging History

你现在查看的是最新测评结果

  • [2024-09-18 23:08:08]
  • 评测
  • 测评结果:WA
  • 用时:1ms
  • 内存:3620kb
  • [2024-09-18 23:08:08]
  • 提交

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;
}

Details

Tip: Click on the bar to expand more detailed information

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'