QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#766122#692. Delete the Pointspan_gWA 3ms4084kbC++202.1kb2024-11-20 16:17:172024-11-20 16:17:19

Judging History

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

  • [2024-11-20 16:17:19]
  • 评测
  • 测评结果:WA
  • 用时:3ms
  • 内存:4084kb
  • [2024-11-20 16:17:17]
  • 提交

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;
}

详细

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