QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#469822#7178. BishopslennercpWA 0ms3624kbC++201.9kb2024-07-10 07:16:572024-07-10 07:16:58

Judging History

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

  • [2024-07-10 07:16:58]
  • 评测
  • 测评结果:WA
  • 用时:0ms
  • 内存:3624kb
  • [2024-07-10 07:16:57]
  • 提交

answer

#include "bits/stdc++.h"
using namespace std;
typedef long long ll;

#define rep(i, begin, end) for(int i = begin; i < end; i++)
#define all(x) x.begin(),x.end()
#define sz(x) (int)x.size()
#define sq(x) (x)*(x)

const int N = 112345;
const int inf = 1e9+7;

void solvetask()
{
    int n, m;
    cin >> n >> m;

    bool flag = n > m;
    if(flag) swap(n,m);
    vector<array<int,2>> res;
    ll cnt = ((m-1)/n + 1);
    int ind = 1;
    for(; cnt > 1; cnt--, ind += n){
        rep(j,1,n+1)
            if(flag) res.push_back({ind, j});
            else res.push_back({j, ind});
    }

    // cout << sz(res) << '\n';
    if(n == m){
        rep(i, 2, n)
            res.push_back({i, n});
    }else{
        ind -= n;
        int l = ind + n/2 + 1;
        int r = m - (n/2 + 1);

        if(n & 1){
            for(; l <= r; l++)
                if(flag) res.push_back({l, n/2});
                else res.push_back({n/2, l});
        }else{
            int aux = (r-l+1)/2;
            // cout << "L " << l << " R " << r << " AUX " << aux << '\n';
            if(r >= l){
                if(flag) res.push_back({l+aux, n/2});
                else res.push_back({n/2, l+aux});
                rep(i,1, aux+2)
                    if(flag) res.push_back({l+aux, n/2+i});
                    else res.push_back({n/2+i, l+aux});
                rep(i,1, aux+1)
                    if(flag) res.push_back({l+aux, n/2-i});
                    else res.push_back({n/2-i, l+aux});
            }
        }

        rep(i,1,n+1)
            if(flag) res.push_back({m, i});
            else res.push_back({i, m});
    }
    cout << sz(res) << '\n';
    for(auto [a,b]: res)
        cout << a << " " << b << '\n';
}

int main()
{
    cin.tie(0)->sync_with_stdio(0);
    int t = 1;
    // cin >> t;
    while (t--)
        solvetask();
        // cout << (solvetask() ? "Yes" : "No") << '\n';
}

详细

Test #1:

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

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

input:

5 5

output:

3
2 5
3 5
4 5

result:

wrong answer Participant's answer is not optimal (3 < 8)