203292026-01-06 14:20:27hunzombiBináris Sakkcpp17Hibás válasz 0/1001.509s11480 KiB
#include <bits/stdc++.h>
using namespace std;

const long long MOD = 1e9 + 7;

int r, c, n;
vector<vector<int>> nodes;

bool sort1(vector<int> a, vector<int> b) {
    return (a[0] <= b[0]);
}

bool sort2(vector<int> a, vector<int> b) {
    return (a[1] <= b[1]);
}

bool sort3(vector<int> a, vector<int> b) {
    return (a[1] - a[0] <= b[1] - b[0]);
}

bool sort4(vector<int> a, vector<int> b) {
    return (a[0] + a[1] <= b[0] + b[1]);
}

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    cin >> r >> c >> n;

    vector<bool> group(n, false);

    for (int i=0; i < n; i++) {
        int u, v;
        cin >> u >> v;
        nodes.push_back({u, v, i});
    }

    int ans = 0;

    sort(nodes.begin(), nodes.end(), sort1);
    for (int i=1; i < n; i++) {
        vector<int> prev = nodes[i - 1];
        vector<int> cur = nodes[i];
        if (prev[0] == cur[0]) {
            if (!group[prev[2]] && !group[cur[2]]) {
                ans++;
            }
            group[prev[2]] = true;
            group[cur[2]] = true;
        }
    }
    sort(nodes.begin(), nodes.end(), sort2);
    for (int i=1; i < n; i++) {
        vector<int> prev = nodes[i - 1];
        vector<int> cur = nodes[i];
        if (prev[1] == cur[1]) {
            if (!group[prev[2]] && !group[cur[2]]) {
                ans++;
            }
            group[prev[2]] = true;
            group[cur[2]] = true;
        }
    }
    sort(nodes.begin(), nodes.end(), sort3);
    for (int i=1; i < n; i++) {
        vector<int> prev = nodes[i - 1];
        vector<int> cur = nodes[i];
        if (prev[1] - prev[0] == cur[1] - cur[0]) {
            if (!group[prev[2]] && !group[cur[2]]) {
                ans++;
            }
            group[prev[2]] = true;
            group[cur[2]] = true;
        }
    }
    sort(nodes.begin(), nodes.end(), sort4);
    for (int i=1; i < n; i++) {
        vector<int> prev = nodes[i - 1];
        vector<int> cur = nodes[i];
        if (prev[1] + prev[0] == cur[1] - cur[0]) {
            if (!group[prev[2]] && !group[cur[2]]) {
                ans++;
            }
            group[prev[2]] = true;
            group[cur[2]] = true;
        }
    }

    for (int i=0; i < n; i++) {
        if (!group[i]) {
            ans++;
        }
        group[i] = true;
    }

    int res = 1;

    while (ans--) {
        res = (res * 2) % MOD;
    }

    cout << res << '\n';

    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva1ms316 KiB
2Elfogadva1ms316 KiB
subtask20/11
3Elfogadva1ms316 KiB
4Elfogadva1ms316 KiB
5Elfogadva1ms316 KiB
6Elfogadva1ms316 KiB
7Elfogadva1ms316 KiB
8Hibás válasz3ms316 KiB
9Hibás válasz3ms316 KiB
10Futási hiba1ms316 KiB
11Hibás válasz4ms500 KiB
12Hibás válasz4ms316 KiB
13Hibás válasz4ms480 KiB
14Futási hiba1ms316 KiB
15Futási hiba2ms316 KiB
16Futási hiba3ms516 KiB
17Futási hiba4ms680 KiB
18Elfogadva1ms504 KiB
subtask30/19
19Futási hiba35ms5560 KiB
20Futási hiba9ms1648 KiB
21Futási hiba8ms1648 KiB
22Futási hiba79ms11156 KiB
23Futási hiba14ms2796 KiB
24Futási hiba18ms1272 KiB
25Futási hiba79ms11476 KiB
26Futási hiba85ms11392 KiB
27Futási hiba93ms11476 KiB
28Futási hiba101ms11476 KiB
29Futási hiba82ms11404 KiB
30Futási hiba107ms11480 KiB
31Futási hiba72ms11476 KiB
32Futási hiba81ms11396 KiB
subtask40/19
33Elfogadva4ms316 KiB
34Elfogadva4ms316 KiB
35Elfogadva2ms316 KiB
36Elfogadva2ms512 KiB
37Elfogadva2ms500 KiB
38Elfogadva2ms316 KiB
39Elfogadva4ms564 KiB
40Elfogadva4ms316 KiB
41Elfogadva4ms316 KiB
42Elfogadva4ms432 KiB
43Futási hiba1ms316 KiB
44Futási hiba2ms316 KiB
45Futási hiba3ms316 KiB
46Futási hiba3ms316 KiB
47Elfogadva4ms316 KiB
subtask50/51
48Hibás válasz81ms1136 KiB
49Hibás válasz228ms2980 KiB
50Hibás válasz908ms10460 KiB
51Hibás válasz1.148s10912 KiB
52Hibás válasz388ms3828 KiB
53Hibás válasz555ms5348 KiB
54Elfogadva222ms2796 KiB
55Elfogadva71ms1136 KiB
56Hibás válasz217ms2796 KiB
57Hibás válasz1.389s10964 KiB
58Hibás válasz1.401s11220 KiB
59Hibás válasz1.485s11220 KiB
60Hibás válasz1.509s11220 KiB
61Hibás válasz1.388s11220 KiB
62Hibás válasz1.401s11220 KiB
63Futási hiba82ms11476 KiB
64Futási hiba381ms11476 KiB
65Futási hiba691ms11424 KiB
66Futási hiba908ms11476 KiB
67Elfogadva1.383s11220 KiB
68Elfogadva1.404s11220 KiB