QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#577427#9310. Permutation Counting 4woshinanzihanWA 1ms4856kbC++141.6kb2024-09-20 11:22:442024-09-20 11:22:48

Judging History

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

  • [2024-09-20 11:22:48]
  • 评测
  • 测评结果:WA
  • 用时:1ms
  • 内存:4856kb
  • [2024-09-20 11:22:44]
  • 提交

answer

#include <iostream>
#include <vector>
#include <cstring>  // 用于memset函数

using namespace std;

const int MAX_N = 1000000;  // 最大的排列大小
bool used[MAX_N + 1];       // 记录每个数字是否已被使用

void solve() {
    int t;  // 测试用例数量
    cin >> t;

    while (t--) {
        int n;  // 当前测试用例的排列大小
        cin >> n;

        memset(used, 0, sizeof(used));  // 初始化used数组,表示每个数字还未使用

        vector<pair<int, int>> ranges(n);  // 存储每个li, ri的范围
        bool is_possible = true;  // 用于判断是否有可能构成排列

        // 读取每个li, ri
        for (int i = 0; i < n; ++i) {
            cin >> ranges[i].first >> ranges[i].second;
            int li = ranges[i].first;
            int ri = ranges[i].second;

            if (li == ri) {  // 如果li == ri,这个位置只能取li这个数字
                if (used[li]) {  // 如果这个数字已经被使用过,无法构成合法排列
                    is_possible = false;
                }
                used[li] = true;  // 标记这个数字已经被使用
            }
        }

        // 输出结果
        if (is_possible) {
            cout << "1\n";  // 如果排列数为奇数(即可能构成合法排列)
        } else {
            cout << "0\n";  // 如果排列数为偶数或无法构成合法排列
        }
    }
}

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

    solve();  // 调用主函数处理输入和输出

    return 0;
}

详细

Test #1:

score: 0
Wrong Answer
time: 1ms
memory: 4856kb

input:

4
5
1 2
1 5
1 2
1 2
2 2
5
1 1
2 4
2 3
5 5
3 4
5
3 5
1 2
3 4
3 5
3 3
5
1 5
1 4
4 5
5 5
1 2

output:

1
1
1
1

result:

wrong answer 1st words differ - expected: '0', found: '1'