QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#414762#7178. BishopspandapythonerWA 121ms23520kbC++202.1kb2024-05-19 17:01:212024-05-19 17:01:22

Judging History

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

  • [2024-05-19 17:01:22]
  • 评测
  • 测评结果:WA
  • 用时:121ms
  • 内存:23520kb
  • [2024-05-19 17:01:21]
  • 提交

answer

#include <bits/stdc++.h>


using namespace std;


#define ll long long
#define flt double
#define all(a) a.begin(), a.end()
#define rall(a) a.rbegin(), a.rend()


const ll inf = 1e18;
mt19937 rnd(234);


int n, m;
vector<pair<int, int>> rs;


void solve_n_smlr_m() {
    set<int> a, b;
    for (int i = 1; i <= n; i += 1) {
        int x = i;
        int y = 1;
        rs.push_back({ x, y });
        a.insert(x + y);
        b.insert(x - y);
    }
    for (int i = 1; i <= n; i += 1) {
        int x = i;
        int y = m;
        if (a.find(x + y) != a.end() || b.find(x - y) != b.end()) {
            continue;
        }
        rs.push_back({ x, y });
        a.insert(x + y);
        b.insert(x - y);
    }
    int f = n;
    if (f % 2 == 0) {
        f -= 1;
    }
    int s = (f + 1) / 2;
    for (int j = s + 2; j <= m; j += 1) {
        int x = s;
        int y = j;
        if (a.find(x + y) != a.end() || b.find(x - y) != b.end()) {
            continue;
        }
        rs.push_back({ x, y });
        a.insert(x + y);
        b.insert(x - y);
    }
    if (n >= 2) {
        f = n;
        if (f % 2 == 1) {
            f -= 1;
        }
        int x0 = (2 + f) / 2;
        int y0 = x0 - 1;
        for (int j = y0 + 2; j <= m; j += 1) {
            int x = x0;
            int y = j;
            if (a.find(x + y) != a.end() || b.find(x - y) != b.end()) {
                continue;
            }
            rs.push_back({ x, y });
            a.insert(x + y);
            b.insert(x - y);
        }
    }
}


void solve() {
    if (n > m) {
        swap(n, m);
        solve_n_smlr_m();
        swap(n, m);
        for (auto& [x, y] : rs) {
            swap(x, y);
        }
    } else {
        solve_n_smlr_m();
    }
}


int32_t main() {
    if (1) {
        ios::sync_with_stdio(0);
        cin.tie(0);
        cout.tie(0);
    }
    cin >> n >> m;
    solve();
    cout << (int)rs.size() << "\n";
    for (auto [x, y] : rs) {
        cout << x << " " << y << "\n";
    }
    return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

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

input:

2 5

output:

6
1 1
2 1
1 5
2 5
1 3
2 3

result:

ok n: 2, m: 5, bishops: 6

Test #2:

score: 0
Accepted
time: 0ms
memory: 3604kb

input:

5 5

output:

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

result:

ok n: 5, m: 5, bishops: 8

Test #3:

score: 0
Accepted
time: 120ms
memory: 23520kb

input:

100000 100000

output:

199998
1 1
2 1
3 1
4 1
5 1
6 1
7 1
8 1
9 1
10 1
11 1
12 1
13 1
14 1
15 1
16 1
17 1
18 1
19 1
20 1
21 1
22 1
23 1
24 1
25 1
26 1
27 1
28 1
29 1
30 1
31 1
32 1
33 1
34 1
35 1
36 1
37 1
38 1
39 1
40 1
41 1
42 1
43 1
44 1
45 1
46 1
47 1
48 1
49 1
50 1
51 1
52 1
53 1
54 1
55 1
56 1
57 1
58 1
59 1
60 1
61...

result:

ok n: 100000, m: 100000, bishops: 199998

Test #4:

score: 0
Accepted
time: 121ms
memory: 23384kb

input:

100000 99999

output:

199998
1 1
1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
1 10
1 11
1 12
1 13
1 14
1 15
1 16
1 17
1 18
1 19
1 20
1 21
1 22
1 23
1 24
1 25
1 26
1 27
1 28
1 29
1 30
1 31
1 32
1 33
1 34
1 35
1 36
1 37
1 38
1 39
1 40
1 41
1 42
1 43
1 44
1 45
1 46
1 47
1 48
1 49
1 50
1 51
1 52
1 53
1 54
1 55
1 56
1 57
1 58
1 59
1 60
1 ...

result:

ok n: 100000, m: 99999, bishops: 199998

Test #5:

score: 0
Accepted
time: 94ms
memory: 18516kb

input:

100000 50000

output:

149998
1 1
1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
1 10
1 11
1 12
1 13
1 14
1 15
1 16
1 17
1 18
1 19
1 20
1 21
1 22
1 23
1 24
1 25
1 26
1 27
1 28
1 29
1 30
1 31
1 32
1 33
1 34
1 35
1 36
1 37
1 38
1 39
1 40
1 41
1 42
1 43
1 44
1 45
1 46
1 47
1 48
1 49
1 50
1 51
1 52
1 53
1 54
1 55
1 56
1 57
1 58
1 59
1 60
1 ...

result:

ok n: 100000, m: 50000, bishops: 149998

Test #6:

score: -100
Wrong Answer
time: 58ms
memory: 13428kb

input:

1 100000

output:

99999
1 1
1 100000
1 3
1 4
1 5
1 6
1 7
1 8
1 9
1 10
1 11
1 12
1 13
1 14
1 15
1 16
1 17
1 18
1 19
1 20
1 21
1 22
1 23
1 24
1 25
1 26
1 27
1 28
1 29
1 30
1 31
1 32
1 33
1 34
1 35
1 36
1 37
1 38
1 39
1 40
1 41
1 42
1 43
1 44
1 45
1 46
1 47
1 48
1 49
1 50
1 51
1 52
1 53
1 54
1 55
1 56
1 57
1 58
1 59
1 6...

result:

wrong answer Participant's answer is not optimal (99999 < 100000)