Task: | Forest |
Sender: | eax511 |
Submission time: | 2016-10-15 15:39:26 +0300 |
Language: | C++ |
Status: | READY |
Result: | ACCEPTED |
test | verdict | time | |
---|---|---|---|
#1 | ACCEPTED | 0.03 s | details |
#2 | ACCEPTED | 0.10 s | details |
#3 | ACCEPTED | 0.10 s | details |
#4 | ACCEPTED | 0.12 s | details |
#5 | ACCEPTED | 0.08 s | details |
#6 | ACCEPTED | 0.12 s | details |
#7 | ACCEPTED | 0.08 s | details |
#8 | ACCEPTED | 0.11 s | details |
#9 | ACCEPTED | 0.10 s | details |
#10 | ACCEPTED | 0.11 s | details |
#11 | ACCEPTED | 0.11 s | details |
#12 | ACCEPTED | 0.12 s | details |
#13 | ACCEPTED | 0.13 s | details |
#14 | ACCEPTED | 0.16 s | details |
#15 | ACCEPTED | 0.15 s | details |
#16 | ACCEPTED | 0.13 s | details |
#17 | ACCEPTED | 0.14 s | details |
#18 | ACCEPTED | 0.16 s | details |
#19 | ACCEPTED | 0.16 s | details |
#20 | ACCEPTED | 0.17 s | details |
#21 | ACCEPTED | 0.17 s | details |
#22 | ACCEPTED | 0.16 s | details |
#23 | ACCEPTED | 0.13 s | details |
#24 | ACCEPTED | 0.17 s | details |
#25 | ACCEPTED | 0.14 s | details |
#26 | ACCEPTED | 0.12 s | details |
#27 | ACCEPTED | 0.10 s | details |
#28 | ACCEPTED | 0.09 s | details |
#29 | ACCEPTED | 0.13 s | details |
#30 | ACCEPTED | 0.08 s | details |
#31 | ACCEPTED | 0.04 s | details |
#32 | ACCEPTED | 0.03 s | details |
Compiler report
input/code.cpp: In function 'int main()': input/code.cpp:47:23: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result] scanf("%d %d",&n,&q); ^ input/code.cpp:51:41: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result] scanf("%d %d %lf %lf",&a,&h,&pl,&pr); ^ input/code.cpp:61:26: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result] scanf("%d %lf",&x,&v); ^
Code
#include <stdio.h> #include <algorithm> using namespace std; #define N (1<<14) double st[N<<1]; void update(int i, int j,double v){ i+=N; j+=N; if(i==j){ st[i]*=v; return; } st[i]*=v; st[j]*=v; while((i>>1)!=(j>>1)){ if(~i&1)st[i|1]*=v; if(j&1)st[j&~1]*=v; i>>=1,j>>=1; } } double query(int a){ int i = N+a; double ri = 1; while(i>0){ ri*=st[i],i>>=1; } return ri; } struct{ int a; int b; double v; } md[202020]; struct qr_t{ int a; double v; bool operator<(const qr_t& o) const{return a<o.a;} } qr[10101]; int mdc=0,qrc=0; int main(){ int n,q; for(int i=0;i<(N<<1);i++)st[i]=1; scanf("%d %d",&n,&q); for(int i=0;i<n;++i){ int a,h; double pl,pr; scanf("%d %d %lf %lf",&a,&h,&pl,&pr); pl/=100; pr/=100; md[mdc++] = {a-h,a-1,1-pl}; md[mdc++] = {a+1,a+h,1-pr}; } double r=0; for(int i=0;i<q;++i){ int x; double v; scanf("%d %lf",&x,&v); qr[qrc++]={x,v}; } std::sort(qr,qr+qrc); for(int i=0;i<mdc;++i){ int a=0,b=qrc,c; while(b-a>1)c=(a+b)>>1,(md[i].a<=qr[c].a?b:a)=c; if(md[i].a>qr[a].a)a++; if(a==qrc)continue; if(qr[a].a>md[i].b)continue; int s = a; a=0,b=qrc; while(b-a>1)c=(a+b)>>1,(md[i].b<qr[c].a?b:a)=c; if(md[i].b<qr[a].a)--a; if(a<0)continue; if(s>a)continue; if(qr[a].a<md[i].a)continue; if(qr[s].a>md[i].b)continue; update(s,a,md[i].v); } for(int i=0;i<qrc;++i)r+=query(i)*qr[i].v; printf("%.15lf\n",r); return 0; }
Test details
Test 1
Verdict: ACCEPTED
input |
---|
1 10000 -102082010 194749759 64 27 -169360811 358 359126034 730 -287313697 384 ... |
correct output |
---|
4609458.5100000035018 |
user output |
---|
4609458.510000001639128 |
Test 2
Verdict: ACCEPTED
input |
---|
100000 10000 0 1 88 2 0 1 63 28 0 1 52 43 0 1 17 55 ... |
correct output |
---|
4972578 |
user output |
---|
4972578.000000000000000 |
Test 3
Verdict: ACCEPTED
input |
---|
100000 10000 0 9 1 31 0 4 23 35 0 9 0 31 0 3 19 25 ... |
correct output |
---|
5087113 |
user output |
---|
5087113.000000000000000 |
Test 4
Verdict: ACCEPTED
input |
---|
100000 10000 0 4 34 37 0 8 63 19 0 92 8 51 0 34 48 23 ... |
correct output |
---|
5008738 |
user output |
---|
5008738.000000000000000 |
Test 5
Verdict: ACCEPTED
input |
---|
100000 10000 0 258 60 40 0 518 49 48 0 136 3 45 0 537 21 54 ... |
correct output |
---|
4973582 |
user output |
---|
4973582.000000000000000 |
Test 6
Verdict: ACCEPTED
input |
---|
100000 10000 0 8216 0 85 0 7923 2 10 0 7717 6 6 0 5850 11 56 ... |
correct output |
---|
4996873 |
user output |
---|
4996873.000000000000000 |
Test 7
Verdict: ACCEPTED
input |
---|
100000 10000 0 61439 52 13 0 31641 81 19 0 52991 24 73 0 74428 59 25 ... |
correct output |
---|
4981920 |
user output |
---|
4981920.000000000000000 |
Test 8
Verdict: ACCEPTED
input |
---|
100000 10000 0 588352 21 36 0 697995 49 32 0 743909 22 55 0 307377 26 33 ... |
correct output |
---|
4972641 |
user output |
---|
4972641.000000000000000 |
Test 9
Verdict: ACCEPTED
input |
---|
100000 10000 0 5653692 8 69 0 9357432 11 34 0 1050285 53 26 0 2776597 62 23 ... |
correct output |
---|
4972878 |
user output |
---|
4972878.000000000000000 |
Test 10
Verdict: ACCEPTED
input |
---|
100000 10000 0 17600178 5 21 0 99902608 43 31 0 88368971 1 65 0 71931544 29 1 ... |
correct output |
---|
5028303 |
user output |
---|
5028303.000000000000000 |
Test 11
Verdict: ACCEPTED
input |
---|
100000 10000 0 188985228 13 35 0 15802601 6 84 0 748803313 4 85 0 287562630 27 15 ... |
correct output |
---|
5003777 |
user output |
---|
5003777.000000000000000 |
Test 12
Verdict: ACCEPTED
input |
---|
100000 10000 0 153546899 42 12 -1 389479397 79 7 0 853802244 69 31 0 870268645 23 47 ... |
correct output |
---|
0 |
user output |
---|
0.000000000000000 |
Test 13
Verdict: ACCEPTED
input |
---|
100000 10000 1 982453016 66 21 9 715621763 7 3 -8 738921209 4 14 -1 867559303 19 68 ... |
correct output |
---|
0 |
user output |
---|
0.000000000000000 |
Test 14
Verdict: ACCEPTED
input |
---|
100000 10000 -8 231075202 33 42 -64 539079444 47 40 -3 913277554 27 72 64 876390450 39 40 ... |
correct output |
---|
0 |
user output |
---|
0.000000000000000 |
Test 15
Verdict: ACCEPTED
input |
---|
100000 10000 -822 640687527 23 10 -63 950992174 45 54 -326 556836776 3 42 476 660842352 25 46 ... |
correct output |
---|
0 |
user output |
---|
0.000000000000000 |
Test 16
Verdict: ACCEPTED
input |
---|
100000 10000 7130 403956088 6 36 -126 45945666 6 26 547 342334298 81 15 3570 301443877 26 12 ... |
correct output |
---|
0 |
user output |
---|
0.000000000000000 |
Test 17
Verdict: ACCEPTED
input |
---|
100000 10000 -79428 461497679 37 2 -42424 58244371 5 45 -29468 880365708 5 86 61735 295975187 38 29 ... |
correct output |
---|
0 |
user output |
---|
0.000000000000000 |
Test 18
Verdict: ACCEPTED
input |
---|
100000 10000 208306 586056116 64 14 -284428 573846943 53 2 -291410 239961140 23 57 948909 246295319 79 17 ... |
correct output |
---|
0 |
user output |
---|
0.000000000000000 |
Test 19
Verdict: ACCEPTED
input |
---|
100000 10000 9520619 407909315 20 34 4343857 436518415 12 73 2074712 319882284 38 35 8482234 982127039 2 77 ... |
correct output |
---|
0 |
user output |
---|
0.000000000000000 |
Test 20
Verdict: ACCEPTED
input |
---|
100000 10000 -15539984 929303404 80 15 96892144 254449084 30 49 93514243 579711370 36 21 -48237130 818395027 44 25 ... |
correct output |
---|
0 |
user output |
---|
0.000000000000000 |
Test 21
Verdict: ACCEPTED
input |
---|
100000 10000 855342311 491522208 29 7 881646558 966041363 67 20 89636039 486326665 83 7 -334997833 924006860 15 46 ... |
correct output |
---|
0 |
user output |
---|
0.000000000000000 |
Test 22
Verdict: ACCEPTED
input |
---|
100000 10000 -244523365 24261145 4 71 905282537 99635911 38 46 328378018 12716414 48 22 -490263671 71879670 67 13 ... |
correct output |
---|
0 |
user output |
---|
0.000000000000000 |
Test 23
Verdict: ACCEPTED
input |
---|
100000 10000 -309176321 7931344 44 11 670761661 4871588 16 77 -877291566 3991335 2 43 467750447 9956482 90 0 ... |
correct output |
---|
0 |
user output |
---|
0.000000000000000 |
Test 24
Verdict: ACCEPTED
input |
---|
100000 10000 885376769 348428 8 66 -355427923 400403 22 24 -77457635 135948 1 80 -187549451 497296 41 49 ... |
correct output |
---|
0.18573908352633872187 |
user output |
---|
0.185739083530784 |
Test 25
Verdict: ACCEPTED
input |
---|
100000 10000 -831679450 979 93 0 830009187 56718 28 49 411212346 88038 26 38 563910477 10089 37 14 ... |
correct output |
---|
928215.57279065309558 |
user output |
---|
928215.572790651349351 |
Test 26
Verdict: ACCEPTED
input |
---|
100000 10000 835756750 5979 28 12 -224114814 5606 58 26 454282261 6626 27 35 506622396 3092 35 40 ... |
correct output |
---|
4227165.671246830374 |
user output |
---|
4227165.671246830374002 |
Test 27
Verdict: ACCEPTED
input |
---|
100000 10000 316659941 123 0 3 617314355 33 60 35 -827504504 535 17 78 -855931189 531 50 17 ... |
correct output |
---|
4913283.3702000044286 |
user output |
---|
4913283.370199998840690 |
Test 28
Verdict: ACCEPTED
input |
---|
100000 10000 76318568 33 28 6 117791067 46 10 1 -840649145 17 19 26 -72446718 32 38 1 ... |
correct output |
---|
4965081.359999999404 |
user output |
---|
4965081.359999999403954 |
Test 29
Verdict: ACCEPTED
input |
---|
100000 10000 -438062424 7 27 33 843193716 8 82 0 -516237151 5 31 10 -586574881 10 2 96 ... |
correct output |
---|
5032129.6899999994785 |
user output |
---|
5032129.689999999478459 |
Test 30
Verdict: ACCEPTED
input |
---|
100000 10000 96882823 1 20 58 -505818489 1 18 45 333830058 1 52 38 -857687471 1 34 5 ... |
correct output |
---|
5031672.2599999997765 |
user output |
---|
5031672.259999999776483 |
Test 31
Verdict: ACCEPTED
input |
---|
1 1 2 2 50 50 1 1 |
correct output |
---|
0.5 |
user output |
---|
0.500000000000000 |
Test 32
Verdict: ACCEPTED
input |
---|
2 1 2 2 50 50 4 2 50 50 3 1 |
correct output |
---|
0.25 |
user output |
---|
0.250000000000000 |