QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#565629#9308. World CupbigJWA 0ms3668kbC++232.4kb2024-09-15 21:54:402024-09-15 21:54:45

Judging History

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

  • [2024-09-15 21:54:45]
  • 评测
  • 测评结果:WA
  • 用时:0ms
  • 内存:3668kb
  • [2024-09-15 21:54:40]
  • 提交

answer

#include <bits/stdc++.h>

namespace stdv = std::views;
namespace stdr = std::ranges;

using i64 = long long;

template<typename A, typename B>
constexpr bool chmax(A& a, const B& b) {
    a = (a > b) ? a : b;
    return a == b;
}
template<typename A, typename B>
constexpr bool chmin(A& a, const B& b) {
    a = (a < b) ? a : b;
    return a == b;
}

constexpr int N = 32;
int a[N];

void Find() {
    for (int i = 0; i < N; i++) {
        std::cin >> a[i];
    }
    int x = a[0];

    for (int i = 0; i < N; i += 4) {
        std::sort(a + i, a + i + 4, std::greater());
    }

    bool find = false;
    std::vector<int> b;
    for (int i = 0; i < N; i += 8) {
        if (a[i] == x || a[i + 5] == x) {
            find = true;
        }
        b.push_back(std::max(a[i], a[i + 5]));
    }
    for (int i = 1; i < N; i += 8) {
        if (a[i] == x || a[i + 3] == x) {
            find = true;
        }
        b.push_back(std::max(a[i], a[i + 3]));
    }
    if (!find) {
        std::cout << "32\n";
        return;
    }

    if (std::find(b.begin(), b.end(), x) == b.end()) {
        std::cout << "16\n";
        return;
    }

    std::vector<int> nb;
    for (int i = 0; i < b.size(); i += 2) {
        nb.push_back(std::max(b[i], b[i + 1]));
    }
    b = std::move(nb);
    if (std::find(b.begin(), b.end(), x) == b.end()) {
        std::cout << "8\n";
        return;
    }

    nb.clear();
    for (int i = 0; i < b.size(); i += 2) {
        nb.push_back(std::max(b[i], b[i + 1]));
    }
    b = std::move(nb);
    if (std::find(b.begin(), b.end(), x) == b.end()) {
        std::cout << "4\n";
        return;
    }

    nb.clear();
    for (int i = 0; i < b.size(); i += 2) {
        nb.push_back(std::max(b[i], b[i + 1]));
    }
    b = std::move(nb);
    if (std::find(b.begin(), b.end(), x) == b.end()) {
        std::cout << "2\n";
        return;
    }

    nb.clear();
    for (int i = 0; i < b.size(); i += 2) {
        nb.push_back(std::max(b[i], b[i + 1]));
    }
    b = std::move(nb);
    if (std::find(b.begin(), b.end(), x) == b.end()) {
        std::cout << "1\n";
        return;
    }
}

int main(int argc, const char* argv[]) {
    std::ios::sync_with_stdio(false);
    std::cin.tie(nullptr);

    int t;
    std::cin >> t;
    
    while (t--) {
        Find();
    }
    
    return 0;
}

詳細信息

Test #1:

score: 100
Accepted
time: 0ms
memory: 3624kb

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: 3668kb

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
8
8
8
8
8
8
8
8
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
2
1

result:

wrong answer 14th numbers differ - expected: '4', found: '8'