QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#32277 | #4002. Easy Fix | DaBenZhongXiaSongKuaiDi# | AC ✓ | 433ms | 152592kb | C++14 | 2.4kb | 2022-05-18 17:55:15 | 2022-05-18 17:55:17 |
Judging History
answer
#include <bits/stdc++.h>
#define int long long
using namespace std;
int a[100005],A[100005],B[100005],C[100005];
struct BIT
{
int tree[100005];
inline void cl()
{
memset(tree,0,sizeof tree);
}
inline int lowbit(int x)
{
return x&-x;
}
inline void add(int x,int y)
{
if(x>100000) return ;
tree[x]+=y,add(x+lowbit(x),y);
}
inline int ask(int x)
{
if(!x) return 0;
return tree[x]+ask(x^lowbit(x));
}
}T[6];
int out[200005],n,q,ans;
struct query
{
int op,t,x,w,id;
}b[6000005];
int cnt=0;
inline void ins(int op,int l,int r,int L,int R,int w,int id)
{
b[++cnt]={op,r,R,w,id};
b[++cnt]={op,l-1,R,-w,id};
b[++cnt]={op,r,L-1,-w,id};
b[++cnt]={op,l-1,L-1,w,id};
}
inline bool cmp(query x,query y)
{
return x.t<y.t;
}
inline void solve()
{
sort(b+1,b+cnt+1,cmp);
int nw=0;
for(int i=1;i<=cnt;i++)
{
while(nw<b[i].t)
{
++nw;
if(A[nw]>B[nw]+1) T[0].add(a[nw],1);
if(B[nw]>A[nw]+1) T[1].add(a[nw],1);
if(A[nw]==B[nw]+1) T[2].add(a[nw],1);
if(B[nw]==A[nw]+1) T[3].add(a[nw],1);
if(A[nw]==B[nw]) T[4].add(a[nw],1);
T[5].add(a[nw],1);
}
if(b[i].op!=-1) out[b[i].id]+=T[b[i].op].ask(b[i].x)*b[i].w;
else
{
int A=T[5].ask(b[i].x-1)+b[i].w;
int B=b[i].x-A-1;
out[b[i].id]+=min(A,B);
// cout << b[i].x << " " << b[i].t << " " << A << " " << B << "\n";
}
}
for(int i=1;i<=q;i++)
cout << out[i]+ans << "\n";
}
signed main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cin >> n;
for(int i=1;i<=n;i++)
cin >> a[i];
for(int i=1;i<=n;i++)
{
A[i]=T[0].ask(a[i]);
T[0].add(a[i],1);
}
T[0].cl();
for(int i=n;i>=1;i--)
{
B[i]=T[0].ask(a[i]);
T[0].add(a[i],1);
}
for(int i=1;i<=n;i++)
ans+=C[i]=min(A[i],B[i]);
T[0].cl();
cin >> q;
for(int i=1;i<=q;i++)
{
int x,y,id=i;
cin >> x >> y;
if(x>y) swap(x,y);
if(x==y)
{
out[i]=0;
continue;
}
out[i]-=C[x],out[i]-=C[y];
if(a[x]<a[y])
{
int l=x+1,r=y-1,L=a[x]+1,R=a[y]-1;
ins(0,l,r,L,R,1,id);
ins(1,l,r,L,R,-1,id);
ins(3,l,r,L,R,-1,id);
ins(4,l,r,L,R,-1,id);
b[++cnt]={-1,y-1,a[x],0,i};
b[++cnt]={-1,x-1,a[y],0,i};
}
else
{
int l=x+1,r=y-1,L=a[y]+1,R=a[x]-1;
ins(0,l,r,L,R,-1,id);
ins(1,l,r,L,R,1,id);
ins(2,l,r,L,R,-1,id);
ins(4,l,r,L,R,-1,id);
b[++cnt]={-1,y-1,a[x],1,i};
b[++cnt]={-1,x-1,a[y],0,i};
}
}
solve();
return 0;
}
詳細信息
Test #1:
score: 100
Accepted
time: 2ms
memory: 13988kb
input:
7 1 6 2 7 5 4 3 7 1 7 2 6 3 5 4 4 1 1 2 1 3 7
output:
7 6 6 7 7 6 8
result:
ok 7 lines
Test #2:
score: 0
Accepted
time: 4ms
memory: 11808kb
input:
5 5 3 1 2 4 3 3 1 2 5 3 3
output:
3 0 0
result:
ok 3 lines
Test #3:
score: 0
Accepted
time: 2ms
memory: 11796kb
input:
10 10 1 6 7 9 8 4 3 5 2 10 6 7 5 2 4 1 10 4 6 2 1 9 2 9 4 5 6 8 9 7
output:
12 7 13 8 7 15 9 11 11 12
result:
ok 10 lines
Test #4:
score: 0
Accepted
time: 5ms
memory: 13892kb
input:
20 3 4 19 18 5 6 20 12 9 13 1 10 8 7 17 16 2 14 11 15 20 19 9 20 6 1 14 11 15 12 10 20 15 10 3 20 1 16 7 8 19 3 17 9 2 20 14 20 2 20 9 2 4 12 4 9 15 7 16 9 4
output:
46 48 43 50 44 42 48 45 42 45 39 41 50 46 48 44 50 42 42 48
result:
ok 20 lines
Test #5:
score: 0
Accepted
time: 2ms
memory: 11748kb
input:
100 70 54 10 72 81 84 56 15 27 19 43 100 49 44 52 33 63 40 95 17 58 2 51 39 22 18 82 1 16 99 32 29 24 94 9 98 5 37 47 14 42 73 41 31 79 64 12 6 53 26 68 67 89 13 90 4 21 93 46 74 75 88 66 57 23 7 25 48 92 62 30 8 50 61 38 87 71 34 97 28 80 11 60 91 3 35 86 96 36 20 59 65 83 45 76 77 78 69 85 55 100 ...
output:
1080 1083 1056 1056 1087 1058 1082 1085 1116 1088 1072 1084 1096 1094 1072 1092 1090 1102 1096 1084 1086 1057 1062 1102 1080 1086 1082 1082 1082 1088 1080 1086 1122 1104 1086 1084 1113 1088 1060 1097 1100 1084 1089 1089 1082 1115 1087 1082 1087 1092 1086 1080 1084 1085 1082 1107 1072 1092 1061 1069 ...
result:
ok 100 lines
Test #6:
score: 0
Accepted
time: 2ms
memory: 13932kb
input:
150 100 27 33 124 22 137 14 109 35 92 54 69 67 96 97 3 19 98 120 28 36 16 84 135 20 9 141 62 48 87 103 18 34 76 122 138 50 1 26 70 117 134 72 121 40 17 142 82 91 53 118 37 111 15 149 60 104 93 46 73 126 47 140 59 132 144 143 78 71 38 85 68 74 31 102 4 139 2 65 45 25 7 29 150 131 21 146 130 148 11 89...
output:
2844 2818 2837 2818 2813 2796 2774 2849 2862 2821 2832 2846 2816 2840 2844 2826 2824 2818 2749 2830 2818 2822 2799 2826 2801 2826 2823 2828 2760 2824 2851 2818 2790 2850 2797 2880 2777 2779 2825 2824 2825 2818 2844 2825 2818 2818 2825 2834 2858 2834 2833 2842 2795 2842 2856 2802 2825 2836 2833 2804 ...
result:
ok 109 lines
Test #7:
score: 0
Accepted
time: 2ms
memory: 14076kb
input:
1001 683 346 384 352 291 367 447 360 490 102 779 900 781 642 299 293 619 742 834 434 817 171 341 561 122 471 145 90 769 457 882 256 525 509 338 41 851 269 96 630 751 297 347 687 903 57 80 771 393 921 82 300 580 579 507 660 463 551 578 902 626 33 927 260 822 670 116 210 349 301 166 631 390 395 860 75...
output:
121741 122016 121953 121923 122061 121986 121953 121867 121695 122378 122035 121961 121937 122668 122276 122063 122168 122565 122176 122037 122001 122599 121741 122053 122082 121891 121699 122031 122071 122077 122049 122065 122207 121927 122039 122050 122087 121807 121984 122029 121982 122033 122033...
result:
ok 2002 lines
Test #8:
score: 0
Accepted
time: 1ms
memory: 14132kb
input:
100 60 58 61 71 6 87 9 82 10 77 51 72 36 97 92 21 68 32 81 20 3 29 52 93 88 94 16 48 50 67 11 55 84 57 38 65 25 41 66 59 19 56 100 49 86 85 34 31 80 2 28 33 15 7 69 26 45 91 75 23 95 22 35 4 8 17 54 79 74 27 53 64 39 12 1 24 13 47 98 5 96 43 42 30 37 90 63 99 73 18 14 40 46 78 70 76 62 83 44 89 200 ...
output:
1073 1086 1083 1095 1076 1079 1079 1094 1070 1095 1080 1084 1087 1080 1056 1116 1086 1074 1090 1096 1100 1076 1080 1070 1078 1090 1086 1092 1068 1084 1086 1084 1080 1079 1084 1082 1082 1060 1051 1098 1078 1097 1089 1078 1078 1087 1083 1066 1089 1075 1087 1089 1080 1095 1076 1081 1090 1080 1100 1096 ...
result:
ok 200 lines
Test #9:
score: 0
Accepted
time: 2ms
memory: 11860kb
input:
200 59 41 64 113 107 121 20 92 106 160 197 181 83 166 36 54 152 180 52 176 22 190 153 10 94 21 125 75 74 24 159 198 175 102 79 188 6 95 40 30 154 115 46 45 42 194 7 48 185 39 189 157 186 66 87 85 1 12 31 78 3 119 127 104 26 29 124 53 184 2 70 196 76 110 34 179 8 112 109 18 132 35 123 65 44 163 191 1...
output:
4825 4773 4757 4781 4777 4785 4782 4768 4794 4814 4869 4789 4859 4824 4767 4777 4806 4794 4789 4869 4781 4779 4803 4822 4766 4737 4773 4733 4795 4777 4795 4907 4783 4786 4756 4746 4743 4798 4784 4789 4835 4805 4767 4787 4803 4783 4773 4808 4763 4780 4793 4759 4783 4796 4840 4798 4814 4799 4777 4797 ...
result:
ok 100 lines
Test #10:
score: 0
Accepted
time: 2ms
memory: 14620kb
input:
1000 662 811 263 46 591 511 230 223 628 603 716 880 187 575 701 184 505 754 130 154 367 91 704 945 171 588 19 486 34 513 622 849 629 437 776 290 743 470 587 681 723 271 879 642 77 281 71 655 365 942 809 94 266 148 146 305 198 311 788 69 343 277 887 557 169 41 784 791 451 812 932 663 594 576 487 946 ...
output:
121683 121539 121718 121831 121737 121628 121167 121818 121731 121681 121693 121250 121364 121745 121395 121733 121183 121711 121758 121745 121781 121237 121552 121964 121711 121814 121807 121735 121385 121746 121793 121779 121740 121725 122351 121731 121722 121742 121552 121741 121785 121503 121852...
result:
ok 1000 lines
Test #11:
score: 0
Accepted
time: 0ms
memory: 14028kb
input:
1005 317 805 235 278 778 826 874 73 679 24 943 520 831 781 645 406 34 43 701 939 56 304 836 620 696 238 1003 957 949 795 295 941 692 484 4 27 561 85 399 80 174 856 199 382 502 144 40 748 218 698 613 250 806 49 55 606 258 297 162 254 982 355 835 102 325 59 689 403 270 167 202 777 246 448 120 300 678 ...
output:
122764 122590 122214 122778 122862 122501 122904 122745 122888 122630 122820 122856 122782 122592 122732 122792 122916 122819 123056 123002 122670 122456 122686 122756 122788 122698 122738 122658 122786 122954 122784 123040 122765 122972 122950 122788 123348 122684 122780 122891 122756 122864 122764...
result:
ok 1005 lines
Test #12:
score: 0
Accepted
time: 4ms
memory: 17216kb
input:
2000 1869 1841 1361 1803 1559 1740 1235 1362 805 1804 165 681 883 181 562 922 1576 1704 271 1260 811 399 475 1775 1519 83 1345 1666 713 798 578 443 666 867 1080 597 665 148 136 1840 846 1054 1566 1537 910 1712 1662 499 958 687 1124 1865 1284 1922 30 1194 1467 1839 1101 1426 1262 381 1812 975 473 182...
output:
503789 503648 504546 503861 504189 503890 503766 502595 503686 503684 504276 503657 503697 503032 503966 503624 503070 503669 503315 503798 503746 503648 502713 503862 503688 503966 502783 503628 503800 504532 504050 503406 503578 503464 503698 503566 503814 503222 503836 504364 503662 503722 503315...
result:
ok 2000 lines
Test #13:
score: 0
Accepted
time: 4ms
memory: 14924kb
input:
1500 1162 964 138 1372 386 1494 420 883 251 1371 663 1218 1110 1241 581 267 1169 901 531 389 416 487 428 94 792 1177 378 1175 1071 1439 817 1222 1174 1076 577 1236 827 97 345 1369 1238 1077 1366 59 184 855 897 1227 1411 1220 556 333 529 503 437 1297 539 1114 1082 284 672 186 979 185 618 493 1009 963...
output:
280833 280859 281123 280954 280912 281018 280572 281182 281128 280828 281016 281062 280788 281554 281002 281135 281096 281102 281043 280970 281022 281222 281015 280984 280944 281022 280985 281332 281244 281020 281119 280839 280892 280936 280942 281024 281048 280900 281086 281022 281016 281017 280661...
result:
ok 1500 lines
Test #14:
score: 0
Accepted
time: 214ms
memory: 85972kb
input:
50001 32799 28330 26898 17795 36551 11914 18140 12319 4684 45329 23187 30307 48712 42400 44352 17220 48100 17699 5773 9592 35944 31214 37208 1896 24298 20883 1764 46297 5828 23488 9300 35166 40644 1194 34625 5792 15396 24610 36373 46762 14317 40124 11778 33884 40392 17464 41852 29411 28407 42896 130...
output:
313567942 313570828 313541464 313566368 313570014 313580817 313573433 313564550 313567488 313553111 313563112 313553598 313571958 313575394 313564694 313562548 313569957 313583070 313567436 313565627 313566690 313566370 313568260 313563684 313581910 313564441 313560288 313566118 313563694 313566516 ...
result:
ok 105000 lines
Test #15:
score: 0
Accepted
time: 233ms
memory: 82812kb
input:
100000 5564 50065 37479 98835 66549 9383 8565 18828 759 62721 53876 55132 47190 54307 88451 70144 51060 43463 64944 59094 20076 29216 70343 80957 67197 88573 95874 7804 87321 38365 72801 43211 16612 19661 45590 84693 61049 21916 18604 62447 55815 66420 64339 26670 15010 67957 30989 17712 36506 93017...
output:
1253406339 1253390279 1253396942 1253394696 1253349171 1253392721 1253395810 1253401984 1253396149 1253403883 1253402207 1253399982 1253391297 1253392479 1253385235 1253408091 1253407907 1253418670 1253408665 1253382867 1253401416 1253466811 1253376372 1253406418 1253407967 1253430595 1253362697 125...
result:
ok 100000 lines
Test #16:
score: 0
Accepted
time: 429ms
memory: 152556kb
input:
100000 42613 88139 15567 15320 48236 82357 13878 16859 25028 52206 59028 39609 6345 37794 76148 48879 60750 94076 16861 70704 43869 50468 48774 17994 96488 35143 2239 32146 18784 55024 56541 42460 85818 93468 50075 28020 24963 85276 77039 94137 48432 14952 55694 50392 65277 31223 63180 66421 87782 1...
output:
1249183103 1249136135 1249193331 1249195897 1249191599 1249187950 1249187725 1249202469 1249173210 1249220288 1249190665 1249184056 1249166726 1249185395 1249198431 1249190359 1249192951 1249195345 1249193703 1249185888 1249186317 1249229350 1249232367 1249204737 1249188497 1249192563 1249198376 124...
result:
ok 200000 lines
Test #17:
score: 0
Accepted
time: 433ms
memory: 147296kb
input:
100000 48688 63936 9895 91928 6132 41016 13085 67302 73859 40804 49516 70480 76032 16860 3125 95156 15802 60262 80815 56471 28394 51818 15117 56080 82444 84386 59809 19129 3322 8515 81028 25872 74705 47623 43712 1817 32110 89 74268 13218 31586 12854 79075 45933 75559 52336 20026 90451 27535 27787 56...
output:
1249952966 1249969920 1249972870 1249973408 1249982475 1249973006 1250003267 1250013180 1249968314 1249991838 1249972937 1249963796 1249962281 1249971804 1249972284 1249965855 1249988260 1249972596 1249973954 1249973825 1249966283 1249970848 1249973504 1249949396 1249977656 1249977198 1249973972 124...
result:
ok 190000 lines
Test #18:
score: 0
Accepted
time: 416ms
memory: 149912kb
input:
100000 83654 22209 62829 15248 19398 76932 40747 33345 33500 84596 42075 84822 23658 79287 90810 26374 30760 98065 43262 90775 51685 85971 11458 97334 6255 92570 57237 31938 11136 27661 81166 23181 16641 81714 58645 2547 90806 59578 24810 965 96531 87037 75308 45207 55041 54115 14958 75064 80135 361...
output:
1242896925 1242877365 1242892839 1242912143 1242896763 1242903916 1242895765 1242892219 1242892705 1242896655 1242891174 1242866715 1242894709 1242899883 1242901213 1242893337 1242845926 1242913387 1242896681 1242897107 1242896764 1242897593 1242896316 1242853622 1242878140 1242890807 1242889485 124...
result:
ok 195000 lines
Test #19:
score: 0
Accepted
time: 380ms
memory: 139564kb
input:
100000 97136 99502 63113 65962 77220 28085 76869 80812 79194 54927 37858 77070 82923 24976 14476 31101 21910 23508 6035 99514 73397 78025 99475 3433 99037 29842 33754 87225 7709 63618 37354 31203 98623 9266 89999 5671 82663 37376 84312 26044 43170 46508 9940 30186 81061 38885 43294 82191 91821 82080...
output:
1250417815 1250411252 1250434187 1250447869 1250457675 1250450753 1250451178 1250444725 1250480221 1250450907 1250441035 1250437191 1250449069 1250456699 1250442582 1250451439 1250456380 1250450571 1250460149 1250459337 1250452105 1250441343 1250461339 1250480232 1250454483 1250444677 1250451615 125...
result:
ok 180000 lines
Test #20:
score: 0
Accepted
time: 418ms
memory: 152592kb
input:
99995 51342 98064 70046 30032 67871 98618 33376 13638 37790 92580 19690 99340 48067 59795 82239 3620 84183 89907 44525 92732 86666 52849 61416 94708 28749 41149 2928 34542 62638 12894 91083 27954 72379 47368 63651 38655 77351 79578 48741 1636 13619 29463 36662 84020 33254 87471 85064 86101 89923 935...
output:
1248318818 1248326038 1248313596 1248255442 1248299162 1248337716 1248295076 1248307608 1248298785 1248310557 1248310988 1248334954 1248317610 1248309884 1248312288 1248348150 1248337922 1248311654 1248290737 1248336136 1248303115 1248306001 1248295290 1248313336 1248323903 1248313416 1248327398 124...
result:
ok 200000 lines