QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#464460#8214. Huge Oil Platformucup-team3215WA 6460ms4040kbC++234.4kb2024-07-06 08:46:492024-07-06 08:46:49

Judging History

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

  • [2024-07-06 08:46:49]
  • 评测
  • 测评结果:WA
  • 用时:6460ms
  • 内存:4040kb
  • [2024-07-06 08:46:49]
  • 提交

answer

#include <bits/stdc++.h>

using namespace std;
using ll = long long;
using ld = double;


template<class T>
int sgn(T x) { return (x > 0) - (x < 0); }

template<class T>
struct Point {
    typedef Point P;
    T x, y;

    explicit Point(T x = 0, T y = 0) : x(x), y(y) {}

    template<typename U>
    explicit Point(Point<U> o) : x(o.x), y(o.y) {};

    bool operator<(P p) const { return tie(x, y) < tie(p.x, p.y); }

    bool operator==(P p) const { return tie(x, y) == tie(p.x, p.y); }

    P operator+(P p) const { return P(x + p.x, y + p.y); }

    P operator-(P p) const { return P(x - p.x, y - p.y); }

    P operator*(T d) const { return P(x * d, y * d); }

    P operator/(T d) const { return P(x / d, y / d); }

    T dot(P p) const { return x * p.x + y * p.y; }

    T cross(P p) const { return x * p.y - y * p.x; }

    T cross(P a, P b) const { return (a - *this).cross(b - *this); }

    T dist2() const { return x * x + y * y; }

    ld dist() const { return sqrtl(dist2()); }

    P unit() const { return *this / dist(); } // makes dist()=1
    P perp() const { return P(-y, x); } // rotates +90 degrees

    // returns point rotated 'a' radians ccw around the origin
    P rotate(double a) const {
        return P(x * cos(a) - y * sin(a), x * sin(a) + y * cos(a));
    }

    friend ostream &operator<<(ostream &os, P p) {
        return os << "(" << p.x << "," << p.y << ")";
    }
};

constexpr ld INF = 1e14 + 123;

struct s_tr {
    const vector<pair<ld, int>> &all;
    vector<array<ld, 4>> s;

    s_tr(const vector<pair<ld, int>> &all) : all(all) {
        ll n = all.size();
        s.resize(4 * n, array<ld, 4>{0, 0, 0, 0});
    }

    ld len(int pos) {
        return all[pos].first - all[pos - 1].first;
    }

    auto combine(const array<ld, 4> &lhs, const array<ld, 4> &rhs, int m) {
        array<ld, 4> res{};
        ld l = -2 * len(m);
        res[3] = rhs[3] + lhs[3] + l;
        res[2] = max(rhs[2], rhs[3] + lhs[2] + l);
        res[1] = max(lhs[1], lhs[3] + rhs[1] + l);
        res[0] = max({lhs[0], rhs[0], l + rhs[1] + lhs[2]});
        return res;
    }

    void upd(int v, int l, int r, int k, ld val) {
        if (l + 1 == r) {
            s[v][3] = s[v][2] = s[v][1] = s[v][0] = val;
            return;
        }
        int m = (r + l) / 2;
        if (k < m)upd(v * 2 + 1, l, m, k, val);
        else upd(v * 2 + 2, m, r, k, val);
        s[v] = combine(s[v * 2 + 1], s[v * 2 + 2], m);
    }

};

template<typename P>
P lineProj(P a, P b, P p, bool refl = false) {
    P v = b - a;
    return p - v.perp() * (1 + refl) * v.cross(p - a) / v.dist2();
}

int main() {
    cin.tie(0)->sync_with_stdio(false);
    mt19937 rng{1000 - 7};
    int n = 400;
    cin >> n;
    vector<Point<ll>> a(n);
    vector<ll> w(n);
    for (int i = 0; i < n; ++i) {
        a[i].x = rng() % (int) 1e6;
        a[i].y = rng() % (int) 1e6;
        w[i] = rng() % (int) 1e9;
        cin >> a[i].x >> a[i].y >> w[i];
    }
    ld res{0};
    for (int i = 0; i < n; ++i) {
        for (int j = i + 1; j < n; ++j) {
            Point<ld> A(a[i]);
            Point<ld> B(a[j]);
            auto solve = [&](bool inv) {
                vector<pair<ld, ll>> points;
                vector<pair<ld, int>> all;
                for (int k = 0; k < n; ++k) {
                    Point<ld> C(a[k]);
                    if ((inv ? -1 : 1) * (a[j] - a[i]).cross(a[k] - a[i]) >= 0) {
                        auto z = lineProj(A, B, C);
                        all.emplace_back((z - A).dist() * ((a[j] - a[i]).dot(a[k] - a[i]) < 0 ? -1 : 1), k);
                        points.push_back({(z - C).dist(), k});
                    }
                }
                sort(all.begin(), all.end());
                vector<int> pos(n);
                for (int j = 0; j < all.size(); ++j) {
                    pos[all[j].second] = j;
                }
                sort(points.begin(), points.end());
                int N = all.size();
                s_tr tree(all);
                for (auto [d, k]: points) {
                    int p = pos[k];
                    tree.upd(0, 0, N, p, w[k]);
                    res = max(res, -2 * d + tree.s[0][0]);
                }
            };
            solve(false);
            solve(true);
        }
    }
    cout << fixed << setprecision(20);
    cout << res;
}

详细

Test #1:

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

input:

2
1 1 1
3 3 1

output:

1.00000000000000000000

result:

ok found '1.0000000', expected '1.0000000', error '0.0000000'

Test #2:

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

input:

3
4 5 5
4 6 7
1 3 8

output:

10.10050506338833464781

result:

ok found '10.1005051', expected '10.1005051', error '0.0000000'

Test #3:

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

input:

2
0 0 1
1000000 1000000 1000000000

output:

1000000000.00000000000000000000

result:

ok found '1000000000.0000000', expected '1000000000.0000000', error '0.0000000'

Test #4:

score: 0
Accepted
time: 1ms
memory: 3816kb

input:

20
328 207 21
365 145 188
347 79 41
374 335 699
288 250 97
32 267 131
296 332 434
2 91 36
139 43 21
26 455 696
57 135 410
14 500 396
255 181 646
103 114 593
309 351 787
207 316 138
440 416 806
413 349 695
413 201 501
455 396 442

output:

6092.44271262378424580675

result:

ok found '6092.4427126', expected '6092.4427126', error '0.0000000'

Test #5:

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

input:

20
38 207 766
202 485 964
257 466 900
205 486 738
166 53 716
61 94 881
252 165 182
63 292 612
225 278 242
224 242 566
381 196 702
56 494 997
268 288 884
379 227 3
357 271 975
55 73 678
260 55 623
399 369 515
116 354 580
404 239 950

output:

11878.25731282745800854173

result:

ok found '11878.2573128', expected '11878.2573128', error '0.0000000'

Test #6:

score: 0
Accepted
time: 1ms
memory: 3876kb

input:

20
249 215 320
38 48 229
457 366 56
36 142 186
44 96 935
97 190 143
215 218 123
116 486 291
304 232 463
429 297 29
479 475 97
97 198 405
69 395 121
381 121 926
137 197 972
410 91 218
87 421 737
117 390 144
319 287 170
353 302 754

output:

5573.25589693263100343756

result:

ok found '5573.2558969', expected '5573.2558969', error '0.0000000'

Test #7:

score: 0
Accepted
time: 1ms
memory: 3880kb

input:

20
474 215 66
376 120 6
367 259 211
362 293 34
416 407 554
133 292 894
171 278 871
459 187 674
383 192 980
352 78 899
83 27 684
138 185 709
357 234 359
390 241 40
418 124 161
258 348 462
408 59 851
110 184 668
28 447 761
20 131 367

output:

8510.59561788340943166986

result:

ok found '8510.5956179', expected '8510.5956179', error '0.0000000'

Test #8:

score: 0
Accepted
time: 5752ms
memory: 3892kb

input:

400
979422 264252 76260
922920 334464 58710
87057 798078 39652
602478 649867 49073
388746 161788 44501
727471 373113 28061
944959 505744 22145
191465 164645 49421
102241 771049 65953
44911 762286 34082
112779 537040 98117
688054 585935 53647
391845 931395 55355
788464 698271 91449
984533 409449 8331...

output:

35610300.74428986757993698120

result:

ok found '35610300.7442899', expected '35610300.7442899', error '0.0000000'

Test #9:

score: 0
Accepted
time: 5785ms
memory: 3904kb

input:

400
972392 809281 95619
19054 872671 65516
732236 376176 38922
412232 147107 36902
242843 486112 34287
311141 416172 5612
453695 775962 79060
806457 678364 29585
324358 953486 58858
532543 378842 67089
20301 449627 86941
252735 242252 66239
335667 454693 40007
563783 444579 49920
663605 128448 3095
...

output:

35334006.33097681403160095215

result:

ok found '35334006.3309768', expected '35334006.3309768', error '0.0000000'

Test #10:

score: 0
Accepted
time: 5765ms
memory: 3968kb

input:

400
718289 727141 23905
849810 500522 44241
890554 385825 70996
597411 423432 99133
994251 463004 32770
388843 280170 47562
664865 319482 48403
353770 474376 52218
508270 890719 28901
80661 697191 77469
459811 411012 23750
741501 408373 60551
163462 269625 56148
406785 260156 41900
337932 855364 578...

output:

36725958.76718686521053314209

result:

ok found '36725958.7671869', expected '36725958.7671869', error '0.0000000'

Test #11:

score: 0
Accepted
time: 5774ms
memory: 3956kb

input:

400
6840 184362 43862
608935 154893 10000000
746897 683314 71237
255918 899062 94342
478185 102216 1923
890855 323689 44654
467417 577805 20
919997 267591 21891
303668 171438 29365
324647 818449 18945
229942 874921 22870
174645 613823 31193
559386 859851 36262
156698 936021 86194
968031 522125 75799...

output:

36590958.86049337685108184814

result:

ok found '36590958.8604934', expected '36590958.8604934', error '0.0000000'

Test #12:

score: 0
Accepted
time: 5787ms
memory: 3864kb

input:

400
213928 419916 45837
334919 278535 7824
100882 416988 26147
682280 524709 85794
569137 589867 48913
344075 156956 4813
87794 655931 25690
285467 798402 55113
295984 894760 44628
535011 461670 72400
917862 461662 90830
544780 751382 81071
588022 966874 10000000
872058 880760 39315
216881 626161 22...

output:

46173511.87199231982231140137

result:

ok found '46173511.8719923', expected '46173511.8719923', error '0.0000000'

Test #13:

score: 0
Accepted
time: 5784ms
memory: 4032kb

input:

400
937407 829281 77362
837708 843713 34574
77624 684540 68232
786430 452449 38426
486327 341660 86859
964636 122535 12764
699975 284575 84208
806142 721010 10955
464680 787842 37887
395874 727033 70790
59849 84503 90263
557124 876914 45080
168385 390089 16463
6894 13302 8291
380410 621577 47431
992...

output:

45704049.96153425425291061401

result:

ok found '45704049.9615343', expected '45704049.9615343', error '0.0000000'

Test #14:

score: 0
Accepted
time: 5806ms
memory: 3896kb

input:

400
769436 473525 91179
925212 211008 73863
393798 496395 71452
241696 745916 92387
519975 24414 32489
867615 821099 81949
644522 605802 2383
237926 379309 38924
389221 50127 90627
201042 315597 28025
314735 422671 18588
616409 476289 21284
397182 521279 80524
190834 918992 35979
405770 829871 41232...

output:

46077961.21213436126708984375

result:

ok found '46077961.2121344', expected '46077961.2121344', error '0.0000000'

Test #15:

score: 0
Accepted
time: 5783ms
memory: 3860kb

input:

400
661885 939867 75528
487494 846559 71593
290098 369543 36755
931898 794760 63921
480058 761470 19842
426135 379317 3551
627245 832185 26033
598705 59485 2540
941138 844706 6210
377586 312034 96388
398374 295001 41568
874081 558382 41501
933464 285407 30933
444410 590787 18450
950252 399446 44906
...

output:

45282826.91919702291488647461

result:

ok found '45282826.9191970', expected '45282826.9191970', error '0.0000000'

Test #16:

score: 0
Accepted
time: 5781ms
memory: 3864kb

input:

400
569839 791389 68749
839674 777277 63933
863326 968947 6358
180942 20818 69013
875946 210141 10000000
321824 169791 90333
877709 273385 90285
135978 546433 47341
46246 441438 70141
12053 496729 17675
576117 666429 46856
197452 968179 51530
509363 87403 55583
193224 750277 97047
7722 889000 70489
...

output:

55534449.24350841343402862549

result:

ok found '55534449.2435084', expected '55534449.2435084', error '0.0000000'

Test #17:

score: 0
Accepted
time: 5766ms
memory: 3904kb

input:

400
256630 187847 11194
897382 694378 18835
350562 923633 99933
205851 958234 8647
715754 266300 68929
684673 719293 82041
304184 162766 99040
699035 219131 15513
315331 32273 49150
339042 179271 60962
241294 982748 68635
660080 88445 99207
162427 641286 80190
199541 249437 72499
204956 414509 32836...

output:

56842720.23254379630088806152

result:

ok found '56842720.2325438', expected '56842720.2325438', error '0.0000000'

Test #18:

score: 0
Accepted
time: 5782ms
memory: 3908kb

input:

400
891557 241099 10125
316914 425364 32054
657652 448853 28433
475110 718140 83424
425448 596023 65334
128996 426213 53829
813917 692602 28723
693896 817142 8591
16046 375611 26923
184028 990969 58048
498854 915662 79220
77435 469326 15270
775143 697151 56
20169 991072 37373
922109 871304 73982
369...

output:

55025500.34102500230073928833

result:

ok found '55025500.3410250', expected '55025500.3410250', error '0.0000000'

Test #19:

score: 0
Accepted
time: 5777ms
memory: 3880kb

input:

400
828767 606397 14986
448568 868264 52625
863674 833593 12260
21259 513438 86242
392594 387534 62680
397658 426280 79956
392196 731597 51319
57619 697219 15776
566541 946740 81803
858232 528140 60149
572906 197112 83601
167809 31160 61928
192638 668070 66133
988108 900482 83698
356771 210640 8457
...

output:

55207053.56148932129144668579

result:

ok found '55207053.5614893', expected '55207053.5614893', error '0.0000000'

Test #20:

score: 0
Accepted
time: 5772ms
memory: 3864kb

input:

400
652930 388986 93092
175667 5066 79475
824559 456628 46198
405436 976444 9728
98439 824664 37902
133984 824519 62538
44592 247702 80017
956993 633946 8159
333726 672264 48680
929512 627435 71532
53499 861432 23848
254670 396688 79430
266385 903784 73840
775791 937341 40023
938364 85706 20447
9444...

output:

66199867.48226016014814376831

result:

ok found '66199867.4822602', expected '66199867.4822602', error '0.0000000'

Test #21:

score: 0
Accepted
time: 5774ms
memory: 3908kb

input:

400
327433 225448 72419
180629 560500 97932
246413 886763 87194
36579 660354 5583
576311 650681 58242
480636 727717 18522
522922 331330 57537
147188 727126 24744
718669 159276 33254
861143 15648 21698
727055 664167 5898
653626 350031 91550
723519 303309 73005
480206 179059 70729
219329 901693 73987
...

output:

65993994.75754105299711227417

result:

ok found '65993994.7575411', expected '65993994.7575411', error '0.0000000'

Test #22:

score: 0
Accepted
time: 5763ms
memory: 3988kb

input:

400
843902 857131 60014
26310 422832 50339
738436 522415 41915
169028 339593 61310
951478 200194 12415
730116 19247 56519
769040 958693 61076
405104 32233 57682
27255 130563 31613
748330 322448 11181
129992 265273 45001
764569 206047 21608
922901 189481 88493
551608 525267 82388
939239 414554 41669
...

output:

65858330.02324959635734558105

result:

ok found '65858330.0232496', expected '65858330.0232496', error '0.0000000'

Test #23:

score: 0
Accepted
time: 5798ms
memory: 3860kb

input:

400
194443 446536 18933
834480 99470 53935
336848 345002 41697
707312 237775 9771
873005 845270 13646
409784 683252 96882
409557 562036 81118
545905 637225 17578
252812 251471 13038
583122 763953 26440
771214 473649 40389
367234 166473 42042
887080 249162 64664
251593 420947 88496
616004 527987 1948...

output:

65937260.83604749292135238647

result:

ok found '65937260.8360475', expected '65937260.8360475', error '0.0000000'

Test #24:

score: 0
Accepted
time: 6196ms
memory: 3896kb

input:

400
12000 15000 680
11000 1000 591
17000 5000 519
8000 11000 858
13000 10000 311
8000 18000 395
14000 9000 877
13000 3000 287
12000 1000 941
4000 16000 984
14000 18000 649
16000 11000 658
11000 3000 384
15000 17000 4
9000 9000 54
14000 17000 792
4000 1000 663
8000 1000 264
15000 12000 266
4000 10000...

output:

122036.00000000000000000000

result:

ok found '122036.0000000', expected '122036.0000000', error '0.0000000'

Test #25:

score: 0
Accepted
time: 6219ms
memory: 3880kb

input:

400
4000 8000 938
6000 15000 810
3000 12000 418
11000 10000 371
3000 0 827
11000 8000 698
15000 15000 472
3000 6000 882
14000 20000 102
7000 12000 316
16000 8000 670
1000 12000 762
8000 4000 870
14000 6000 444
5000 17000 738
17000 20000 805
13000 15000 783
6000 5000 265
3000 13000 250
13000 1000 78
...

output:

128699.00000000000000000000

result:

ok found '128699.0000000', expected '128699.0000000', error '0.0000000'

Test #26:

score: 0
Accepted
time: 5401ms
memory: 3944kb

input:

393
501977 499949 1064
501419 499972 9173
500849 499948 9603
500589 499952 6032
504175 499982 4549
501116 499970 1533
500453 499968 982
500011 499934 6882
501220 499934 8645
504473 499950 2317
503158 499959 1540
503053 499979 5786
501377 499989 7154
500421 500000 3273
500014 499937 9631
500223 49998...

output:

2073525.00000000000000000000

result:

ok found '2073525.0000000', expected '2073525.0000000', error '0.0000000'

Test #27:

score: 0
Accepted
time: 5359ms
memory: 3960kb

input:

396
498773 499704 5151
498639 499979 6010
498813 500339 5372
499052 500511 5691
499749 499597 927
498679 500163 6899
499191 500563 6999
499988 500081 2093
498654 500099 3267
499856 499695 6590
499344 499422 3869
499293 499422 4747
498637 500001 4148
499229 500571 932
499980 500109 5609
499505 500545...

output:

2064044.07840450853109359741

result:

ok found '2064044.0784045', expected '2064044.0784045', error '0.0000000'

Test #28:

score: 0
Accepted
time: 6460ms
memory: 3900kb

input:

400
40303 40303 1453
390251 390251 1312
253614 253614 1546
139586 139586 1412
24575 24575 941
183821 183821 1502
236903 236903 1209
231988 231988 979
384353 384353 1162
146467 146467 1170
112062 112062 1684
355846 355846 1593
230022 230022 1513
302764 302764 1552
87487 87487 1599
28507 28507 997
331...

output:

1999802031.26613807678222656250

result:

ok found '1999802031.2661381', expected '1999802031.2661400', error '0.0000000'

Test #29:

score: 0
Accepted
time: 9ms
memory: 3796kb

input:

50
209 371 798
125 220 901
328 492 992
443 229 681
38 281 529
425 91 314
288 388 255
285 89 63
344 151 949
375 83 130
148 102 863
360 298 511
92 365 841
256 468 636
74 7 425
298 345 402
369 486 475
431 229 947
193 490 526
434 14 619
23 96 726
420 439 780
285 487 537
458 109 948
339 182 677
139 91 19...

output:

25084.74528013826420647092

result:

ok found '25084.7452801', expected '25084.7452801', error '0.0000000'

Test #30:

score: 0
Accepted
time: 8ms
memory: 3884kb

input:

50
420 371 543
455 58 870
246 378 555
281 386 232
417 99 340
461 419 872
251 447 708
127 291 446
423 386 466
79 371 1000
246 156 154
401 278 215
379 472 79
265 80 751
362 427 614
372 94 646
464 351 589
417 250 871
396 155 117
376 358 424
66 0 869
104 2 145
341 327 136
253 500 543
291 425 744
153 438...

output:

26849.55156340346366050653

result:

ok found '26849.5515634', expected '26849.5515634', error '0.0000000'

Test #31:

score: 0
Accepted
time: 8ms
memory: 3896kb

input:

50
144 378 97
292 123 647
438 278 711
112 43 976
295 128 367
497 21 134
207 274 456
181 492 829
8 346 687
284 426 871
70 435 445
436 483 815
180 78 316
274 207 673
410 354 611
226 345 890
291 491 703
142 44 395
105 307 708
325 187 740
390 186 908
56 299 998
412 182 927
48 121 329
236 166 619
167 51 ...

output:

25810.97508321726127178408

result:

ok found '25810.9750832', expected '25810.9750832', error '0.0000000'

Test #32:

score: 0
Accepted
time: 8ms
memory: 3816kb

input:

50
355 153 843
121 187 719
348 164 866
438 193 16
167 446 178
32 116 884
170 334 397
241 199 508
94 299 204
214 207 741
168 488 840
477 477 927
468 418 554
56 101 84
183 280 799
81 101 430
111 355 521
128 64 24
308 467 594
274 249 544
432 358 539
248 371 660
469 30 526
62 237 411
175 127 199
470 172...

output:

22784.04687921069125877693

result:

ok found '22784.0468792', expected '22784.0468792', error '0.0000000'

Test #33:

score: 0
Accepted
time: 5789ms
memory: 4040kb

input:

400
88 615 563
919 996 925
130 993 163
44 382 953
475 437 164
940 635 32
213 635 64
866 403 327
164 834 379
798 943 918
571 37 979
677 281 528
348 383 807
142 233 437
734 174 863
303 515 743
884 595 76
43 743 675
456 937 928
24 729 993
576 27 736
510 490 695
609 499 168
703 299 625
589 794 86
715 24...

output:

190869.22701774723827838898

result:

ok found '190869.2270177', expected '190869.2270177', error '0.0000000'

Test #34:

score: 0
Accepted
time: 5812ms
memory: 3892kb

input:

400
278 435 722
551 404 454
584 843 181
25 757 366
950 742 248
99 192 909
584 492 869
878 722 550
779 797 597
336 809 9
352 823 753
421 118 6
838 446 571
802 960 753
593 601 140
690 822 647
555 216 534
990 712 591
208 410 141
729 889 100
35 349 762
798 250 241
782 598 504
852 52 862
924 144 321
12 8...

output:

186339.23882095181033946574

result:

ok found '186339.2388210', expected '186339.2388210', error '0.0000000'

Test #35:

score: 0
Accepted
time: 5761ms
memory: 3944kb

input:

400
6673 9889 910
3709 8455 582
7092 9083 540
3041 1369 622
747 2167 104
2415 6227 597
2820 7873 207
435 583 601
2498 8443 312
8643 7352 671
5790 1376 892
4807 5030 391
6188 6392 754
8911 4490 73
6125 9923 451
1514 6199 200
5898 2119 50
744 6107 671
7212 6386 1000
7465 81 731
1825 7364 205
3188 5198...

output:

154633.81334844371303915977

result:

ok found '154633.8133484', expected '154633.8133484', error '0.0000000'

Test #36:

score: -100
Wrong Answer
time: 5769ms
memory: 3860kb

input:

400
48052 17721 565
3087 14272 308
65596 82931 778
79902 7079 674
50190 65197 214
70389 87497 717
21025 26393 983
30027 60373 666
26049 18885 496
13639 99523 801
59187 96376 581
14132 40920 161
42248 20388 981
53806 64932 720
50784 29004 55
3600 17988 934
41589 16919 376
4003 88064 466
2433 72482 13...

output:

1553.09127564797336162883

result:

wrong answer 1st numbers differ - expected: '1399.1596422', found: '1553.0912756', error = '0.1100172'