QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#173128 | #7178. Bishops | ucup-team1951# | TL | 0ms | 3856kb | C++14 | 2.3kb | 2023-09-09 22:05:17 | 2023-09-09 22:05:18 |
Judging History
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;
}
}
/*
#.#
#.#
####
#...
*/
Details
Tip: Click on the bar to expand more detailed information
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 ...