QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#173128#7178. Bishopsucup-team1951#TL 0ms3856kbC++142.3kb2023-09-09 22:05:172023-09-09 22:05:18

Judging History

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

  • [2023-09-09 22:05:18]
  • 评测
  • 测评结果:TL
  • 用时:0ms
  • 内存:3856kb
  • [2023-09-09 22:05:17]
  • 提交

answer

// g++-13 1.cpp -std=c++17 -O2 -I .
#include <bits/stdc++.h>
using namespace std;

using ll = long long;
using ld = long double;
 
using vi = vector<int>;
using vvi = vector<vi>;
using vll = vector<ll>;
using vvll = vector<vll>;
using vld = vector<ld>;
using vvld = vector<vld>;
using vst = vector<string>;
using vvst = vector<vst>;
 
#define fi first
#define se second
#define pb push_back
#define eb emplace_back
#define pq_big(T) priority_queue<T,vector<T>,less<T>>
#define pq_small(T) priority_queue<T,vector<T>,greater<T>>
#define all(a) a.begin(),a.end()
#define rep(i,start,end) for(ll i=start;i<(ll)(end);i++)
#define per(i,start,end) for(ll i=start;i>=(ll)(end);i--)
#define uniq(a) sort(all(a));a.erase(unique(all(a)),a.end())

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

  int n,m;cin>>n>>m;

  if(n==1&&m==1){
    cout<<1<<endl;
    cout<<1<<" "<<1<<endl;
    return 0;
  }

  int swaped=0;
  if(n>m){
    swap(n,m);
    swaped=1;
  }

  if(n==m){
    cout<<n+m-2<<endl;
    rep(i,0,n){
      cout<<1<<" "<<i+1<<endl;
    }
    rep(i,1,n-1){
      cout<<n<<" "<<i+1<<endl;
    }
    return 0;
  }

  if(n==2){
    vector<pair<int,int>> ans;
    rep(i,0,n){
      rep(j,0,m){
        if(j%2==0){
          int p=i+1,q=j+1;
          if(swaped)swap(p,q);
          ans.emplace_back(p,q);
        }
      }
    }
    cout<<ans.size()<<endl;
    for(auto [p,q]:ans)cout<<p<<" "<<q<<endl;
    return 0;
  }

  // n <= m
  vector<pair<int,int>> ans;
  rep(i,0,m){
    if(i==0){
      rep(j,0,n){
        ans.emplace_back(j,i);
      }
    }
    else if(n-1<=i&&i+n<=m){
      if(n%2==0){
        if(n!=2&&i%2==1){
          ans.emplace_back(n/2-1,i);
          ans.emplace_back(n/2,i);
        }
        if(n==2&&i%2==0){
          ans.emplace_back(n/2-1,i);
          ans.emplace_back(n/2,i);
        }
      }
      else{
        ans.emplace_back(n/2,i);
      }
    }
    else if(i==m-1){
      if(n==m){
        rep(j,1,n-1){
          ans.emplace_back(j,i);
        }
      }
      else{
        rep(j,0,n){
          ans.emplace_back(j,i);
        }
      }
    }
  }

  cout<<ans.size()<<endl;
  for(auto [x,y]:ans){
    if(swaped){
      swap(x,y);
    }
    cout<<x+1<<" "<<y+1<<endl;
  }
}

/*
#.#
#.#

####
#...
*/

详细

Test #1:

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

input:

2 5

output:

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

result:

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

Test #2:

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

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: -100
Time Limit Exceeded

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: