QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#766122 | #692. Delete the Points | pan_g | WA | 3ms | 4084kb | C++20 | 2.1kb | 2024-11-20 16:17:17 | 2024-11-20 16:17:19 |
Judging History
answer
#include <bits/stdc++.h>
#define endl "\n"
typedef long long i64;
typedef double lb;
signed main(){
std::cin.tie(nullptr) -> sync_with_stdio(false);
int n;
std::cin >> n;
std::cout << "Yes" << endl;
std::map<int, std::vector<int> > mp;
for(int i = 0, x, y;i < n;i++){
std::cin >> x >> y;
mp[x].emplace_back(y);
}
std::cout << std::fixed << std::setprecision(3);
lb tx = -1, ty = -1;
auto delete_with_t = [&](lb x, lb y) -> void {
lb len = std::max(std::fabs(x - tx), std::fabs(y - ty));
lb r = std::max(ty, y);
std::cout << x - len - 0.5 << ' ' << r - len - 0.5 << ' ' << x + 0.5 << ' ' << r + 0.5 << endl;
tx = ty = -1;
};
auto delete_pair = [&](lb x, lb sy, lb by) -> void {
lb y = x - (by - sy);
std::cout << y - 0.5 << ' ' << sy - 0.5 << ' ' << x + 0.5 << ' ' << by + 0.5 << endl;
};
for(auto &[x, f] : mp){
sort(f.begin(), f.end());
int i = 0, m = f.size();
if(tx == -1){
for(;i + 1 < m;i += 2) delete_pair(x, f[i], f[i + 1]);
if(m & 1) tx = x, ty = f.back();
}
else{
for(;i + 1 < m && f[i + 1] < ty;i += 2) delete_pair(x, f[i], f[i + 1]);
if(i < m && f[i] <= ty){
lb delx = (lb)x - tx;
lb dely = ty - f[i];
if(i == m - 1 || f[i + 1] > ty){
delete_with_t(x, f[i]);
i ++;
}
else{
if(delx > dely){
delete_pair(x, f[i], f[i + 1]);
i += 2;
}
else{
delete_with_t(x, f[i]);
i ++;
}
}
}
if(tx >= 0 && i < m){
delete_with_t(x, f[i]);
i ++;
}
for(;i + 1 < m;i += 2) delete_pair(x, f[i], f[i + 1]);
if(i == m - 1) tx = x, ty = f.back();
}
}
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 1ms
memory: 3752kb
input:
4 1 1 2 2 5 5 6 6
output:
Yes 0.500 0.500 2.500 2.500 4.500 4.500 6.500 6.500
result:
ok OK
Test #2:
score: 0
Accepted
time: 0ms
memory: 3828kb
input:
4 0 0 1 2 2 1 4 4
output:
Yes -1.500 -0.500 1.500 2.500 0.500 0.500 4.500 4.500
result:
ok OK
Test #3:
score: 0
Accepted
time: 0ms
memory: 4048kb
input:
4 1 2 3 2 2 1 2 3
output:
Yes 0.500 0.500 2.500 2.500 1.500 1.500 3.500 3.500
result:
ok OK
Test #4:
score: 0
Accepted
time: 1ms
memory: 3832kb
input:
6 12 9 1 5 10 14 20 14 15 4 7 9
output:
Yes 0.500 2.500 7.500 9.500 6.500 8.500 12.500 14.500 9.500 3.500 20.500 14.500
result:
ok OK
Test #5:
score: 0
Accepted
time: 1ms
memory: 3824kb
input:
10 39 72 59 52 23 17 2 31 30 0 25 88 2 36 61 23 4 96 59 76
output:
Yes -3.500 30.500 2.500 36.500 -56.500 16.500 23.500 96.500 -58.500 -0.500 30.500 88.500 38.500 51.500 59.500 72.500 7.500 22.500 61.500 76.500
result:
ok OK
Test #6:
score: 0
Accepted
time: 0ms
memory: 3980kb
input:
10 53 95 37 51 84 11 3 39 31 20 37 84 42 27 95 38 6 6 16 19
output:
Yes -27.500 5.500 6.500 39.500 15.500 4.500 31.500 20.500 3.500 50.500 37.500 84.500 -15.500 26.500 53.500 95.500 67.500 10.500 95.500 38.500
result:
ok OK
Test #7:
score: -100
Wrong Answer
time: 3ms
memory: 4084kb
input:
3000 997371332 135791687 997371332 135791686 997371332 135791685 997371333 135791685 997371333 135791687 997371334 135791687 997371333 135791688 997371331 135791686 997371333 135791689 997371334 135791686 997371334 135791689 997371333 135791684 997371332 135791689 997371331 135791685 997371334 13579...
output:
Yes 997371302.500 135791683.500 997371304.500 135791685.500 997371302.500 135791707.500 997371304.500 135791709.500 997371303.500 135791684.500 997371305.500 135791686.500 997371300.500 135791693.500 997371305.500 135791698.500 997371303.500 135791706.500 997371305.500 135791708.500 997371303.500 13...
result:
wrong answer We have 3 point(s) in query 1