QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#308470#7178. Bishopskevinshan#WA 15ms5260kbC++172.4kb2024-01-20 06:31:462024-01-20 06:31:46

Judging History

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

  • [2024-01-20 06:31:46]
  • 评测
  • 测评结果:WA
  • 用时:15ms
  • 内存:5260kb
  • [2024-01-20 06:31:46]
  • 提交

answer

#include <bits/stdc++.h>
using namespace std;

#define ll long long
#define all(x) x.begin(), x.end()
#define pb push_back
#define mp make_pair
#define ps push
#define in insert
#define f first
#define s second
#define nl cout<<"\n"
#define ca(v) for(auto i:v) cout<<i<<" ";
#define cbit(x) __builtin_popcount(x)
#define gcd(a, b) __gcd(a, b)
#define lcm(a, b) (a*b/gcd(a, b))
const int xm[4] = {-1, 1, 0, 0};
const int ym[4] = {0, 0, -1, 1};
const int MOD = 1e9 + 7;
const int MAXN = 5e5 + 5;
const ll POW = 9973;


#define FOR(i,a,b) for(int i=a;i<b;i++)
#define For(i,a) FOR(i,0,a)
#define vi vector<int>
#define vl vector<ll>
#define trav(a,b) for(auto& a:b)
#define pi pair<int,int>
#define vpi vector<pi>

const int MX = 1e5+5;
bool flipped = false;

vpi v;

void pr(int i, int j) {
    if (flipped) {
        v.pb({j,i});
        // cout << j << " " << i << '\n';
    } else {
        v.pb({i,j});
        // cout << i << " " << j << '\n';
    }
}
void ps() {
    trav(x, v) {
        cout << x.f << " " << x.s << '\n';
    }
}
int main()
{
    ios_base::sync_with_stdio(0); cin.tie(0);
    if (fopen("input.in", "r")) {
        freopen("input.in", "r", stdin);
        freopen("output.out", "w", stdout);
    }
    ll n,m;cin>>n>>m;
    if (m<n) {
        flipped = true;
        swap(n,m);
    }
    
    if (m%n==0) {
        ll ans = m/n* n + (n-2);
        cout << ans << '\n';
        for(int bi=0;bi<m/n;bi++) {
            FOR(j,1,n+1) {
                pr(bi*n+1, j);
            }
        }
        FOR(j,2,n) {
            pr(m, j);
        }
        ps();
    } else {
        // ll ans = (m/n-1)*n + (m%n)-1+2*n;
        // cout << ans << '\n';
        for(int bi=0;bi<m/n;bi++) {
            FOR(j,1,n+1) {
                pr(j, bi*n+1);
            }
        }
        if (n%2==0) {
            int ci = (m/n-1)*n;
            int rem = ((m%n)-1)/2 * 2;
            int opp = n-rem;
            
            int mid = ci + (n+(m%n))/2;
            FOR(i, opp/2+1, opp/2+1+rem) {
                pr(i, (ci+m)/2);
            }
        } else {
            int ci = (m/n-1)*n;
            int rem = m%n-1;
            ci += m%n;
            FOR(i,ci, ci+rem) {
                pr(n/2+1, i+1);
            }
        }
        FOR(i,1,n+1) {
            pr(i, m);
        }
        cout << v.size() << '\n';
        ps();
    }
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 1ms
memory: 3544kb

input:

2 5

output:

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

result:

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

Test #2:

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

input:

5 5

output:

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

result:

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

Test #3:

score: 0
Accepted
time: 10ms
memory: 5208kb

input:

100000 100000

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: 100000, bishops: 199998

Test #4:

score: 0
Accepted
time: 15ms
memory: 5164kb

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: -100
Wrong Answer
time: 14ms
memory: 5260kb

input:

100000 50000

output:

149998
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:

wrong answer Integer parameter [name=y] equals to 50001, violates the range [1, 50000]