QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#792162 | #8775. MountainCraft | lukamosiashvili# | AC ✓ | 558ms | 42100kb | C++17 | 2.8kb | 2024-11-29 02:22:49 | 2024-11-29 02:22:49 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
const int N = 200009;
int a[N * 4];
int mn[N * 8], mn_cnt[N * 8], lz[N * 8];
pair <int, int> point[N];
pair <int, int> p[N];
map <int, int> m;
void calc(int v){
if(mn[v * 2] < mn[v * 2 + 1]){
mn[v] = mn[v * 2];
mn_cnt[v] = mn_cnt[v * 2];
} else if(mn[v * 2] > mn[v * 2 + 1]){
mn[v] = mn[v * 2 + 1];
mn_cnt[v] = mn_cnt[v * 2 + 1];
} else {
mn[v] = mn[v * 2];
mn_cnt[v] = mn_cnt[v * 2] + mn_cnt[v * 2 + 1];
}
}
void bld(int l, int r, int v){
if(l == r){
mn[v] = 0;
mn_cnt[v] = a[l];
return;
}
int mid = (l + r) / 2;
bld(l, mid, v * 2);
bld(mid + 1, r, v * 2 + 1);
calc(v);
}
void pushdown(int l, int r, int v){
if(l != r){
lz[v * 2] += lz[v];
lz[v * 2 + 1] += lz[v];
}
mn[v] += lz[v];
lz[v] = 0;
}
void upd(int L, int R, int val, int l, int r, int v){
pushdown(l, r, v);
if(l > R || r < L) return;
if(l >= L && r <= R){
lz[v] = val;
pushdown(l, r, v);
return;
}
upd(L, R, val, l, (l + r) / 2, v * 2);
upd(L, R, val, (l + r) / 2 + 1, r, v * 2 + 1);
calc(v);
}
int main(){
ios_base::sync_with_stdio(false),cin.tie(0),cout.tie(0);
int q, w;
cin >> q >> w;
vector <int> cut;
cut.push_back(0);
cut.push_back(w);
for(int i = 1; i <= q; i++){
cin >> point[i].first >> point[i].second;
p[i] = {point[i].first - point[i].second, point[i].first + point[i].second};
p[i].first = max(p[i].first, 0);
p[i].second = min(p[i].second, w);
cut.push_back(p[i].first);
cut.push_back(p[i].second);
}
sort(cut.begin(), cut.end());
int ind = 0;
m[0] = 0;
for(int i = 1; i < cut.size(); i++){
if(cut[i] != cut[i - 1]){
ind++;
a[ind] = cut[i] - cut[i - 1];
m[cut[i]] = ind;
}
}
/*for(int i = 1; i <= ind; i++) cout << a[i] << " ";
cout << "\n";*/
int sz = 1;
while(sz < ind) sz *= 2;
bld(1, sz, 1);
map <pair <int, int>, bool> mount;
for(int i = 1; i <= q; i++){
int l = m[p[i].first] + 1, r = m[p[i].second];
//cout << l << " " << r << "\n";
if(mount[point[i]]){
mount[point[i]] = 0;
upd(l, r, -1, 1, sz, 1);
}else{
mount[point[i]] = 1;
upd(l, r, 1, 1, sz, 1);
}
int ans = 0;
if(mn[1] != 0){
ans = w;
} else {
ans = w - mn_cnt[1];
}
long double x = 2;
cout << setprecision(12) << sqrt(x) * ans << "\n";
}
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 0ms
memory: 9872kb
input:
3 10 3 2 7 3 9 6
output:
5.65685424949 12.7279220614 12.7279220614
result:
ok 3 numbers
Test #2:
score: 0
Accepted
time: 0ms
memory: 12000kb
input:
5 100 31 41 59 26 31 41 59 26 31 41
output:
101.823376491 120.208152802 73.5391052434 0 101.823376491
result:
ok 5 numbers
Test #3:
score: 0
Accepted
time: 0ms
memory: 11916kb
input:
100 10 6 4 2 3 7 6 5 5 3 6 7 5 5 8 10 4 9 8 0 9 9 10 9 3 2 3 10 10 8 4 10 9 0 1 1 7 0 2 3 4 10 3 3 10 7 4 7 5 1 4 0 7 1 9 5 6 8 8 7 4 8 1 3 9 2 1 5 5 2 1 10 9 8 4 0 9 10 7 4 1 9 10 8 6 5 4 1 4 0 9 9 3 4 8 5 10 7 2 8 10 7 10 3 4 2 2 8 5 0 9 5 3 1 4 6 4 0 3 8 1 1 6 3 8 8 4 6 5 10 2 2 2 8 4 6 1 2 4 6 4...
output:
11.313708499 14.1421356237 14.1421356237 14.1421356237 14.1421356237 14.1421356237 14.1421356237 14.1421356237 14.1421356237 14.1421356237 14.1421356237 14.1421356237 14.1421356237 14.1421356237 14.1421356237 14.1421356237 14.1421356237 14.1421356237 14.1421356237 14.1421356237 14.1421356237 14.1421...
result:
ok 100 numbers
Test #4:
score: 0
Accepted
time: 0ms
memory: 12160kb
input:
1000 100 95 8 54 8 64 96 47 34 77 47 99 91 45 70 8 6 64 84 48 42 53 14 73 66 38 27 6 52 19 75 33 39 6 24 37 80 27 45 96 48 55 95 67 1 23 78 40 4 76 7 77 22 4 47 41 31 60 54 96 37 79 52 63 40 7 92 17 7 74 12 93 16 87 5 67 43 60 29 71 58 52 41 53 84 38 2 46 87 13 54 54 14 16 93 57 7 91 98 31 23 70 3 9...
output:
18.3847763109 41.0121933088 141.421356237 141.421356237 141.421356237 141.421356237 141.421356237 141.421356237 141.421356237 141.421356237 141.421356237 141.421356237 141.421356237 141.421356237 141.421356237 141.421356237 141.421356237 141.421356237 141.421356237 141.421356237 141.421356237 141.42...
result:
ok 1000 numbers
Test #5:
score: 0
Accepted
time: 3ms
memory: 12192kb
input:
1000 1000 942 407 513 739 329 437 605 318 847 416 128 543 588 237 903 365 703 556 313 928 621 344 974 444 780 265 993 889 103 427 94 977 897 586 566 326 785 938 224 952 150 441 716 802 729 584 954 347 640 4 91 633 738 970 823 253 158 890 115 734 327 391 554 258 373 67 396 995 788 73 609 703 627 801 ...
output:
657.609306503 1414.21356237 1414.21356237 1414.21356237 1414.21356237 1414.21356237 1414.21356237 1414.21356237 1414.21356237 1414.21356237 1414.21356237 1414.21356237 1414.21356237 1414.21356237 1414.21356237 1414.21356237 1414.21356237 1414.21356237 1414.21356237 1414.21356237 1414.21356237 1414.2...
result:
ok 1000 numbers
Test #6:
score: 0
Accepted
time: 113ms
memory: 14688kb
input:
200000 10 6 4 4 9 7 9 6 2 0 7 6 7 4 8 10 5 7 8 5 4 3 6 5 9 0 9 7 3 8 2 8 6 5 9 5 10 4 9 0 3 10 5 3 9 7 2 2 3 9 7 5 6 1 7 0 4 9 6 4 7 3 8 6 4 2 7 0 6 8 3 6 2 8 10 1 6 0 4 6 1 3 3 5 8 9 7 8 7 1 10 6 2 1 8 8 6 6 1 6 3 0 6 6 1 5 6 1 1 6 4 7 9 3 5 10 6 2 8 6 7 7 3 6 8 8 5 9 7 4 5 6 4 5 10 8 6 8 5 4 6 4 6...
output:
11.313708499 14.1421356237 14.1421356237 14.1421356237 14.1421356237 14.1421356237 14.1421356237 14.1421356237 14.1421356237 14.1421356237 14.1421356237 14.1421356237 14.1421356237 14.1421356237 14.1421356237 14.1421356237 14.1421356237 14.1421356237 14.1421356237 14.1421356237 14.1421356237 14.1421...
result:
ok 200000 numbers
Test #7:
score: 0
Accepted
time: 171ms
memory: 16588kb
input:
200000 100 96 9 26 82 73 33 12 92 13 77 87 2 23 79 41 91 75 28 6 45 42 81 27 51 7 64 80 90 27 65 77 72 54 60 79 8 10 61 46 15 65 16 75 95 65 4 89 38 42 74 96 63 48 87 39 78 2 59 36 48 36 66 12 75 44 45 80 86 79 99 26 30 29 54 39 44 7 27 99 23 41 76 23 71 76 51 90 76 59 22 45 70 73 98 24 94 70 54 76 ...
output:
18.3847763109 141.421356237 141.421356237 141.421356237 141.421356237 141.421356237 141.421356237 141.421356237 141.421356237 141.421356237 141.421356237 141.421356237 141.421356237 141.421356237 141.421356237 141.421356237 141.421356237 141.421356237 141.421356237 141.421356237 141.421356237 141.42...
result:
ok 200000 numbers
Test #8:
score: 0
Accepted
time: 340ms
memory: 27624kb
input:
200000 10000 8596 2507 1107 4452 8591 3460 3584 2911 8817 9663 1604 2760 6281 8431 5271 4811 2193 1874 5329 3970 2679 8672 8426 8447 117 4849 3471 6286 177 4806 9726 7217 6743 3882 573 4295 5291 7358 1356 6269 7882 8426 8750 985 5365 8276 7420 6372 8234 6329 7723 9014 3369 1097 7140 8329 3475 447 37...
output:
5530.98924244 13392.6024357 14142.1356237 14142.1356237 14142.1356237 14142.1356237 14142.1356237 14142.1356237 14142.1356237 14142.1356237 14142.1356237 14142.1356237 14142.1356237 14142.1356237 14142.1356237 14142.1356237 14142.1356237 14142.1356237 14142.1356237 14142.1356237 14142.1356237 14142....
result:
ok 200000 numbers
Test #9:
score: 0
Accepted
time: 558ms
memory: 42100kb
input:
200000 1000000000 979065421 937279323 384811311 879649222 673927841 883688174 47686221 518846247 805783947 475892423 94359891 104324315 116498230 496486640 155617000 261326127 423462080 949904263 758478482 824824842 594993542 173897699 495194886 158960628 409812195 339201236 958417812 891558399 7055...
output:
1355119095.86 1414213562.37 1414213562.37 1414213562.37 1414213562.37 1414213562.37 1414213562.37 1414213562.37 1414213562.37 1414213562.37 1414213562.37 1414213562.37 1414213562.37 1414213562.37 1414213562.37 1414213562.37 1414213562.37 1414213562.37 1414213562.37 1414213562.37 1414213562.37 141421...
result:
ok 200000 numbers
Test #10:
score: 0
Accepted
time: 2ms
memory: 9872kb
input:
3 100 82 61 46 1 82 61
output:
111.722871427 111.722871427 2.82842712475
result:
ok 3 numbers
Test #11:
score: 0
Accepted
time: 256ms
memory: 38236kb
input:
200000 200005 199999 1 199998 2 199997 3 199996 4 199995 5 199994 6 199993 7 199992 8 199991 9 199990 10 199989 11 199988 12 199987 13 199986 14 199985 15 199984 16 199983 17 199982 18 199981 19 199980 20 199979 21 199978 22 199977 23 199976 24 199975 25 199974 26 199973 27 199972 28 199971 29 19997...
output:
2.82842712475 5.65685424949 8.48528137424 11.313708499 14.1421356237 16.9705627485 19.7989898732 22.627416998 25.4558441227 28.2842712475 31.1126983722 33.941125497 36.7695526217 39.5979797464 42.4264068712 45.2548339959 48.0832611207 50.9116882454 53.7401153702 56.5685424949 59.3969696197 62.225396...
result:
ok 200000 numbers
Test #12:
score: 0
Accepted
time: 255ms
memory: 33320kb
input:
200000 200005 0 200000 1 199999 2 199998 3 199997 4 199996 5 199995 6 199994 7 199993 8 199992 9 199991 10 199990 11 199989 12 199988 13 199987 14 199986 15 199985 16 199984 17 199983 18 199982 19 199981 20 199980 21 199979 22 199978 23 199977 24 199976 25 199975 26 199974 27 199973 28 199972 29 199...
output:
282842.712475 282842.712475 282842.712475 282842.712475 282842.712475 282842.712475 282842.712475 282842.712475 282842.712475 282842.712475 282842.712475 282842.712475 282842.712475 282842.712475 282842.712475 282842.712475 282842.712475 282842.712475 282842.712475 282842.712475 282842.712475 282842...
result:
ok 200000 numbers
Test #13:
score: 0
Accepted
time: 385ms
memory: 40188kb
input:
200000 200005 188054 11946 25503 174497 5164 194836 199742 258 65650 134350 93448 106552 165510 34490 33001 166999 54081 145919 123066 76934 50244 149756 46561 153439 66523 133477 8593 191407 173633 26367 105494 94506 198495 1505 75564 124436 83182 116818 123337 76663 186899 13101 110487 89513 10858...
output:
33788.3904322 282842.712475 282842.712475 282842.712475 282842.712475 282842.712475 282842.712475 282842.712475 282842.712475 282842.712475 282842.712475 282842.712475 282842.712475 282842.712475 282842.712475 282842.712475 282842.712475 282842.712475 282842.712475 282842.712475 282842.712475 282842...
result:
ok 200000 numbers
Test #14:
score: 0
Accepted
time: 244ms
memory: 36484kb
input:
200000 200005 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12 12 13 13 14 14 15 15 16 16 17 17 18 18 19 19 20 20 21 21 22 22 23 23 24 24 25 25 26 26 27 27 28 28 29 29 30 30 31 31 32 32 33 33 34 34 35 35 36 36 37 37 38 38 39 39 40 40 41 41 42 42 43 43 44 44 45 45 46 46 47 47 48 48 49 49 50 50 51 5...
output:
2.82842712475 5.65685424949 8.48528137424 11.313708499 14.1421356237 16.9705627485 19.7989898732 22.627416998 25.4558441227 28.2842712475 31.1126983722 33.941125497 36.7695526217 39.5979797464 42.4264068712 45.2548339959 48.0832611207 50.9116882454 53.7401153702 56.5685424949 59.3969696197 62.225396...
result:
ok 200000 numbers
Test #15:
score: 0
Accepted
time: 245ms
memory: 32740kb
input:
200000 200005 200000 200000 199999 199999 199998 199998 199997 199997 199996 199996 199995 199995 199994 199994 199993 199993 199992 199992 199991 199991 199990 199990 199989 199989 199988 199988 199987 199987 199986 199986 199985 199985 199984 199984 199983 199983 199982 199982 199981 199981 199980...
output:
282849.783542 282849.783542 282849.783542 282849.783542 282849.783542 282849.783542 282849.783542 282849.783542 282849.783542 282849.783542 282849.783542 282849.783542 282849.783542 282849.783542 282849.783542 282849.783542 282849.783542 282849.783542 282849.783542 282849.783542 282849.783542 282849...
result:
ok 200000 numbers
Test #16:
score: 0
Accepted
time: 375ms
memory: 39952kb
input:
200000 200005 99686 99686 193692 193692 142065 142065 56279 56279 120521 120521 147618 147618 148660 148660 1328 1328 69007 69007 5297 5297 136306 136306 136195 136195 101372 101372 66966 66966 110843 110843 170697 170697 23097 23097 146157 146157 118098 118098 11530 11530 42300 42300 74535 74535 17...
output:
281954.586357 282849.783542 282849.783542 282849.783542 282849.783542 282849.783542 282849.783542 282849.783542 282849.783542 282849.783542 282849.783542 282849.783542 282849.783542 282849.783542 282849.783542 282849.783542 282849.783542 282849.783542 282849.783542 282849.783542 282849.783542 282849...
result:
ok 200000 numbers
Test #17:
score: 0
Accepted
time: 99ms
memory: 16060kb
input:
200000 1000000000 227478108 704821317 227478108 704821317 227478108 704821317 227478108 704821317 227478108 704821317 227478108 704821317 227478108 704821317 227478108 704821317 227478108 704821317 227478108 704821317 227478108 704821317 227478108 704821317 227478108 704821317 227478108 704821317 22...
output:
1318470491.03 0 1318470491.03 0 1318470491.03 0 1318470491.03 0 1318470491.03 0 1318470491.03 0 1318470491.03 0 1318470491.03 0 1318470491.03 0 1318470491.03 0 1318470491.03 0 1318470491.03 0 1318470491.03 0 1318470491.03 0 1318470491.03 0 1318470491.03 0 1318470491.03 0 1318470491.03 0 1318470491.0...
result:
ok 200000 numbers
Test #18:
score: 0
Accepted
time: 125ms
memory: 15076kb
input:
200000 1000000000 517510913 200230004 39507125 601409920 30526823 972694998 176712 534697072 789676092 648567171 967127462 822743807 176712 534697072 176712 534697072 117560602 867751869 967127462 822743807 227002346 310628813 789676092 648567171 800983841 618498638 39507125 601409920 517510913 2002...
output:
566335974.502 1015038939.09 1414213562.37 1414213562.37 1414213562.37 1414213562.37 1414213562.37 1414213562.37 1414213562.37 1414213562.37 1414213562.37 1414213562.37 1414213562.37 1414213562.37 1414213562.37 1414213562.37 1414213562.37 1414213562.37 1414213562.37 1414213562.37 1414213562.37 141421...
result:
ok 200000 numbers
Test #19:
score: 0
Accepted
time: 129ms
memory: 15732kb
input:
200000 1000000000 351451808 649636951 49985291 500589827 661773922 164694264 186065541 226295124 497991267 744030929 574182692 439989249 853617452 979655888 308109763 216029731 66584658 40643821 855305206 820425533 740812379 441059394 151159173 495945962 214589103 777995590 957581330 407536966 88513...
output:
1414213562.37 1414213562.37 1414213562.37 1414213562.37 1414213562.37 1414213562.37 1414213562.37 1414213562.37 1414213562.37 1414213562.37 1414213562.37 1414213562.37 1414213562.37 1414213562.37 1414213562.37 1414213562.37 1414213562.37 1414213562.37 1414213562.37 1414213562.37 1414213562.37 141421...
result:
ok 200000 numbers
Test #20:
score: 0
Accepted
time: 110ms
memory: 14416kb
input:
200000 1000000000 821475126 617812186 464369722 134670005 821475126 617812186 464369722 134670005 464369722 134670005 821475126 617812186 464369722 134670005 464369722 134670005 464369722 134670005 464369722 134670005 821475126 617812186 464369722 134670005 464369722 134670005 464369722 134670005 46...
output:
1126190670.47 1126190670.47 380904295.032 0 380904295.032 1126190670.47 1126190670.47 1126190670.47 1126190670.47 1126190670.47 380904295.032 0 380904295.032 0 380904295.032 1126190670.47 380904295.032 0 380904295.032 0 380904295.032 1126190670.47 380904295.032 1126190670.47 1126190670.47 0 11261906...
result:
ok 200000 numbers
Test #21:
score: 0
Accepted
time: 108ms
memory: 16248kb
input:
200000 11 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 1 10 1 8 1 10 10 3 1 1 2 9 10 1 4 5 1 1 5 1 6 7 7 2 1 4 1 5 3 7 9 6 4 3 7 6 1 1 8 2 5 2 9 10 9 6 10 9 8 1 2 7 3 6 6 6 6 7 5 1 9 7 9 3 5 9 5 3 3 6 8 10 9 7 5 5 1 2 1 3 2 5 5 8 1 4 9 9 8 1 3 4 8 8 9 2 10 1 4 7 3 4 1 1 2 1 2 5 1 5 4 1 3 2 1 6 2 6 8 5 9 10 7 5...
output:
2.82842712475 4.24264068712 5.65685424949 7.07106781187 8.48528137424 9.89949493661 11.313708499 12.7279220614 14.1421356237 15.5563491861 15.5563491861 15.5563491861 15.5563491861 15.5563491861 15.5563491861 15.5563491861 15.5563491861 15.5563491861 15.5563491861 15.5563491861 15.5563491861 15.5563...
result:
ok 200000 numbers
Test #22:
score: 0
Accepted
time: 86ms
memory: 14760kb
input:
200000 4 1 1 2 1 3 1 1 1 3 2 3 3 2 1 3 3 2 1 2 2 2 2 3 1 2 2 3 3 1 2 2 3 1 2 2 1 2 2 1 2 3 1 2 2 2 1 2 1 3 3 2 2 1 2 1 3 2 1 3 3 2 3 3 1 2 1 1 2 1 3 3 1 2 3 2 1 1 2 3 3 1 3 3 3 2 3 2 3 2 1 3 1 3 3 1 2 2 1 2 1 1 1 1 3 1 1 1 1 2 3 2 2 1 2 1 1 1 3 1 1 1 2 1 1 2 3 1 1 2 2 2 2 2 1 2 1 3 2 1 1 3 1 1 2 1 1...
output:
2.82842712475 4.24264068712 5.65685424949 4.24264068712 4.24264068712 5.65685424949 5.65685424949 4.24264068712 4.24264068712 5.65685424949 4.24264068712 4.24264068712 5.65685424949 5.65685424949 5.65685424949 5.65685424949 5.65685424949 5.65685424949 5.65685424949 5.65685424949 5.65685424949 5.6568...
result:
ok 200000 numbers
Test #23:
score: 0
Accepted
time: 160ms
memory: 16120kb
input:
200000 51 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 2 47 25 41 44 8 35 38 37 24 42 32 40 48 19 4 26 4...
output:
2.82842712475 4.24264068712 5.65685424949 7.07106781187 8.48528137424 9.89949493661 11.313708499 12.7279220614 14.1421356237 15.5563491861 16.9705627485 18.3847763109 19.7989898732 21.2132034356 22.627416998 24.0416305603 25.4558441227 26.8700576851 28.2842712475 29.6984848098 31.1126983722 32.52691...
result:
ok 200000 numbers