QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#281343 | #7178. Bishops | ikaurov# | WA | 19ms | 7108kb | C++20 | 3.1kb | 2023-12-10 03:08:58 | 2023-12-10 03:08:58 |
Judging History
answer
#pragma GCC optimize("O3")
#include <bits/stdc++.h>
using namespace std;
#define all(arr) (arr).begin(), (arr).end()
#define ll long long
#define ld long double
#define pb push_back
#define sz(x) (int)(x).size()
#define fi first
#define se second
#define endl '\n'
vector<pair<int, int>> stupid_vertical(int n){
vector<pair<int, int>> ret;
for (int i = 1; i <= n; i++) ret.pb({1, i});
return ret;
}
vector<pair<int, int>> stupid_horizontal(int n){
vector<pair<int, int>> ret;
for (int i = 1; i <= n; i++) ret.pb({i, 1});
return ret;
}
vector<pair<int, int>> smart_square(int n){
vector<pair<int, int>> ret;
for (int i = 1; i <= n; i++) ret.pb({i, 1});
for (int i = 2; i < n; i++) ret.pb({i, n});
return ret;
}
vector<pair<int, int>> place(int n, int m){
if (n == 3 && m == 6){
return vector<pair<int, int>>{
pair{1, 1},
pair{2, 1},
pair{3, 1},
pair{2, 3},
pair{2, 4},
pair{1, 6},
pair{2, 6},
pair{3, 6},
};
}
if (n == 6 && m == 3){
return vector<pair<int, int>>{
pair{1, 1},
pair{1, 2},
pair{1, 3},
pair{3, 2},
pair{4, 2},
pair{6, 1},
pair{6, 2},
pair{6, 3},
};
}
if (n == m){
return smart_square(n);
}
else{
if (n > m){
vector<pair<int, int>> ret;
int i = 0;
for (; i + m + (m == 3 && n % 3 == 0? 3 : 0) < n; i += m){
auto cur = stupid_vertical(m);
for (auto [x, y] : cur){
ret.pb({x + i, y});
}
}
vector<pair<int, int>> rem;
if (m == 3 && n % 3 == 0){
rem = place(6, 3);
}
else if (n % m == 0) rem = smart_square(m);
else rem = place(n % m, m);
for (auto [x, y] : rem) ret.pb({x + i, y});
return ret;
}
else{
vector<pair<int, int>> ret;
int i = 0;
for (; i + n + (n == 3 && m % 3 == 0? 3 : 0) < m; i += n){
auto cur = stupid_horizontal(n);
for (auto [x, y] : cur){
ret.pb({x, y + i});
}
}
vector<pair<int, int>> rem;
if (n == 3 && m % 3 == 0){
rem = place(3, 6);
}
else if (m % n == 0) rem = smart_square(n);
else rem = place(n, m % n);
for (auto [x, y] : rem) ret.pb({x, y + i});
return ret;
}
}
}
void check(int n, int m, vector<pair<int, int>> ans){
int need = n + m - 1 - (__gcd(n, m) > 1);
// assert(sz(ans) == need);
for (int i = 0; i < sz(ans); i++){
for (int j = 0; j < i; j++){
int x1 = ans[i].fi, y1 = ans[i].se;
int x2 = ans[j].fi, y2 = ans[j].se;
assert(x1 + y1 != x2 + y2);
assert(x1 - y1 != x2 - y2);
}
}
}
signed main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
// cout.precision(20);
// for (int n = 1; n < 200; n++){
// for (int m = 1; m < 200; m++){
// check(n, m, place(n, m));
// }
// }
int n, m;
cin >> n >> m;
auto ans = place(n, m);
cout << sz(ans) << endl;
for (auto [x, y] : ans) cout << x << " " << y << endl;
// check(n, m, ans);
}
详细
Test #1:
score: 100
Accepted
time: 0ms
memory: 3620kb
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: 3580kb
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: 19ms
memory: 5188kb
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: 18ms
memory: 7092kb
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: 12ms
memory: 6020kb
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: 0
Accepted
time: 11ms
memory: 4152kb
input:
1 100000
output:
100000 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: 1, m: 100000, bishops: 100000
Test #7:
score: 0
Accepted
time: 7ms
memory: 7108kb
input:
34535 99889
output:
134423 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: 34535, m: 99889, bishops: 134423
Test #8:
score: 0
Accepted
time: 8ms
memory: 4428kb
input:
12231 97889
output:
110119 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: 12231, m: 97889, bishops: 110119
Test #9:
score: 0
Accepted
time: 11ms
memory: 4480kb
input:
10000 100000
output:
109998 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: 10000, m: 100000, bishops: 109998
Test #10:
score: 0
Accepted
time: 10ms
memory: 4140kb
input:
13 99999
output:
100011 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 1 14 2 14 3 14 4 14 5 14 6 14 7 14 8 14 9 14 10 14 11 14 12 14 13 14 1 27 2 27 3 27 4 27 5 27 6 27 7 27 8 27 9 27 10 27 11 27 12 27 13 27 1 40 2 40 3 40 4 40 5 40 6 40 7 40 8 40 9 40 10 40 11 40 12 40 13 40 1 53 2 53 3 53 4 53 5 53 6 53 ...
result:
ok n: 13, m: 99999, bishops: 100011
Test #11:
score: 0
Accepted
time: 10ms
memory: 4324kb
input:
21 99999
output:
100019 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 1 22 2 22 3 22 4 22 5 22 6 22 7 22 8 22 9 22 10 22 11 22 12 22 13 22 14 22 15 22 16 22 17 22 18 22 19 22 20 22 21 22 1 43 2 43 3 43 4 43 5 43 6 43 7 43 8 43 9 43 10 43 11 43 12 43 13 43 14 43 15 43...
result:
ok n: 21, m: 99999, bishops: 100019
Test #12:
score: 0
Accepted
time: 17ms
memory: 5976kb
input:
49999 100000
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:
ok n: 49999, m: 100000, bishops: 149998
Test #13:
score: -100
Wrong Answer
time: 14ms
memory: 5728kb
input:
33333 99999
output:
133330 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 Participant's answer is not optimal (133330 < 133331)