QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#368072 | #3918. Permutations again | KLPP# | AC ✓ | 230ms | 152712kb | C++20 | 2.1kb | 2024-03-26 19:41:43 | 2024-03-26 19:41:45 |
Judging History
answer
#include<bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace std;
using namespace __gnu_pbds;
typedef long long int lld;
typedef tree<int,null_type,less<int>,rb_tree_tag,tree_order_statistics_node_update> ordered_set;
#define rep(i,a,b) for(int i=a;i<b;i++)
#define trav(a,v) for(auto a:v)
bool in[2000000];
int arr[2000000];
const int MAX=2e6;
vector<pair<int,int> >Q;
class ST{
pair<lld,int> M[4*MAX];
public:
void build(int a, int b, int node){
if(a==b){
M[node]={arr[a],a};
return;
}
int mid=(a+b)/2;
build(a,mid,2*node);
build(mid+1,b,2*node+1);
M[node]=max(M[2*node],M[2*node+1]);
}
pair<lld,int> query(int a, int b, int node, int l, int r){
if(r<a || b<l)return {-1,-1};
if(l<=a && b<=r)return M[node];
int mid=(a+b)/2;
return max(query(a,mid,2*node,l,r),query(mid+1,b,2*node+1,l,r));
}
};
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
using ui64 = unsigned long long;
ui64 gerar(ui64 lo, ui64 hi) { return uniform_int_distribution<ui64>(lo,hi)(rng); }
using namespace chrono;
ST S;
int n;
void process(int a, int b){
if(a>b)return;
pair<lld,int> p=S.query(0,n-1,1,a,b);
int pos=p.second;
int val=p.first;
rep(i,max(a,pos+1-val),min(b,pos)+1){
if(i+val-1>b)break;
Q.push_back({i,i+val-1});
}
process(a,pos-1);
process(pos+1,b);
}
vector<bool> W;
lld hsh[2000000];
lld pref[2000000];
lld tar[2000000];
void Tr(){
rep(i,0,n){
hsh[i]=gerar(0,1e9);
}
pref[0]=0;
rep(i,0,n){
pref[i+1]=pref[i]+hsh[arr[i]-1];
}
tar[0]=0;
rep(i,0,n){
tar[i+1]=tar[i]+hsh[i];
}
rep(i,0,(int)Q.size()){
int l=Q[i].first;
int r=Q[i].second;
if(tar[r-l+1]!=pref[r+1]-pref[l]){
W[i]=false;
}
}
}
void solve(){
cin>>n;
rep(i,0,n){
cin>>arr[i];
}
S.build(0,n-1,1);
process(0,n-1);
W.resize(Q.size(),true);
rep(t,0,6){
Tr();
}
lld ans=0;
trav(a,W)ans+=a;
cout<<ans<<"\n";
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
int tt=1;
//cin>>tt;
while(tt--){
solve();
}
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 0ms
memory: 11884kb
input:
3 3 1 2
output:
3
result:
ok answer is '3'
Test #2:
score: 0
Accepted
time: 2ms
memory: 11884kb
input:
1 1
output:
1
result:
ok answer is '1'
Test #3:
score: 0
Accepted
time: 2ms
memory: 11768kb
input:
2 2 2
output:
0
result:
ok answer is '0'
Test #4:
score: 0
Accepted
time: 0ms
memory: 11828kb
input:
2 1 1
output:
2
result:
ok answer is '2'
Test #5:
score: 0
Accepted
time: 1ms
memory: 11776kb
input:
8 4 3 2 1 3 2 4 1
output:
9
result:
ok answer is '9'
Test #6:
score: 0
Accepted
time: 2ms
memory: 11828kb
input:
7 3 2 1 3 2 1 2
output:
9
result:
ok answer is '9'
Test #7:
score: 0
Accepted
time: 2ms
memory: 11976kb
input:
9 2 1 3 2 1 4 2 3 1
output:
12
result:
ok answer is '12'
Test #8:
score: 0
Accepted
time: 0ms
memory: 11820kb
input:
5 3 2 1 4 3
output:
5
result:
ok answer is '5'
Test #9:
score: 0
Accepted
time: 2ms
memory: 11972kb
input:
5 5 2 3 1 4
output:
4
result:
ok answer is '4'
Test #10:
score: 0
Accepted
time: 1ms
memory: 11820kb
input:
2 2 1
output:
2
result:
ok answer is '2'
Test #11:
score: 0
Accepted
time: 0ms
memory: 11928kb
input:
10 10 9 8 7 6 5 4 3 2 1
output:
10
result:
ok answer is '10'
Test #12:
score: 0
Accepted
time: 0ms
memory: 11872kb
input:
1000 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 64 63 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 1 2 3 4...
output:
1184
result:
ok answer is '1184'
Test #13:
score: 0
Accepted
time: 2ms
memory: 11848kb
input:
2000 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 29 19 20 21 22 23 24 25 26 27 28 18 1 2 3 4 5 22 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 6 23 24 25 26 27 28 29 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 23 22 24 25 26 27 28 29 1 2 3 27 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 ...
output:
2359
result:
ok answer is '2359'
Test #14:
score: 0
Accepted
time: 3ms
memory: 11916kb
input:
3000 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 29 25 26 27 28 24 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 1 2 3 4 5 43 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 6 44 45 46 47 48 49 1 2 3 4 5 6 7 8 9 1...
output:
3207
result:
ok answer is '3207'
Test #15:
score: 0
Accepted
time: 23ms
memory: 21188kb
input:
98947 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 107 98 99 100 1...
output:
108492
result:
ok answer is '108492'
Test #16:
score: 0
Accepted
time: 11ms
memory: 17476kb
input:
83887 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 822 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 1...
output:
102604
result:
ok answer is '102604'
Test #17:
score: 0
Accepted
time: 15ms
memory: 20956kb
input:
80773 1 2 3 4 9 6 7 8 5 1 2 3 4 9 6 7 8 5 5 2 3 4 1 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 5 4 3 6 7 8 9 1 2 6 4 5 3 7 8 9 1 2 3 4 5 6 7 8 9 1 8 3 4 5 6 7 2 9 1 3 2 4 5 6 7 8 9 1 2 3 5 4 6 7 8 9 1 2 3 4 8 6 7 5 9 5 2 3 4 1 6 7 8 9 1 2 3 4 9 6 7 8 5 1 2 3 4 5 6 7 8 9 1 2 3 8 5 6 7 4 9 1 8 3 4 5 6 7 2 9 1 2 3 ...
output:
89642
result:
ok answer is '89642'
Test #18:
score: 0
Accepted
time: 17ms
memory: 25736kb
input:
81060 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 10...
output:
107523
result:
ok answer is '107523'
Test #19:
score: 0
Accepted
time: 2ms
memory: 12016kb
input:
2034 8 13 25 12 1 15 10 18 11 29 28 6 19 5 20 16 24 17 14 21 9 7 22 27 23 3 4 2 26 14 8 9 18 13 28 24 29 3 10 6 22 4 11 19 1 15 17 5 16 12 7 21 27 20 2 25 26 23 3 18 13 24 14 29 22 12 25 20 8 16 5 28 27 15 7 10 17 6 23 19 4 2 26 21 1 9 11 21 7 16 8 19 17 24 11 27 20 23 2 28 18 4 26 10 1 6 9 13 12 14...
output:
155
result:
ok answer is '155'
Test #20:
score: 0
Accepted
time: 0ms
memory: 11840kb
input:
2576 49 12 14 28 30 44 11 29 31 6 9 25 35 33 39 7 27 46 26 22 36 45 1 10 3 17 38 37 2 34 48 47 18 40 5 8 20 19 32 23 42 24 13 41 16 43 15 21 4 21 15 17 28 13 1 9 12 24 45 31 14 47 30 20 29 36 6 8 7 16 34 32 4 37 27 40 42 33 26 22 38 2 35 11 48 49 23 46 3 39 5 44 19 10 41 18 43 25 37 15 10 12 20 18 7...
output:
113
result:
ok answer is '113'
Test #21:
score: 0
Accepted
time: 16ms
memory: 19080kb
input:
91547 430 206 395 465 267 173 207 4 361 472 457 389 161 221 388 119 493 447 289 235 240 298 184 203 224 286 274 145 365 262 282 219 488 74 372 196 172 157 287 476 418 357 237 232 334 114 366 320 350 308 227 492 150 200 257 57 416 359 265 332 181 55 230 96 450 293 175 69 315 329 58 211 128 316 231 40...
output:
369
result:
ok answer is '369'
Test #22:
score: 0
Accepted
time: 17ms
memory: 19072kb
input:
96540 81 731 673 853 78 984 690 146 764 286 83 949 105 70 852 337 320 253 110 460 32 865 52 726 613 261 450 125 160 659 377 420 630 560 628 303 193 750 94 170 195 476 955 578 942 904 561 62 746 969 364 91 451 481 825 712 63 408 25 936 399 443 117 257 944 194 533 478 130 221 225 903 986 549 550 482 5...
output:
195
result:
ok answer is '195'
Test #23:
score: 0
Accepted
time: 20ms
memory: 22612kb
input:
95611 2 9 6 8 5 7 3 4 1 5 9 2 4 1 6 8 3 7 4 5 1 6 2 8 7 3 9 4 1 3 6 5 2 7 8 9 1 8 6 4 7 2 3 9 5 6 7 1 4 8 2 3 5 9 1 3 7 8 4 9 2 5 6 2 9 5 6 4 7 8 1 3 2 5 4 8 1 3 6 7 9 3 4 2 7 1 6 8 9 5 9 5 6 8 4 2 7 3 1 6 5 2 3 4 1 8 7 9 9 8 5 6 4 3 1 7 2 8 4 2 7 6 3 1 5 9 9 5 4 1 6 3 7 2 8 8 4 7 5 6 2 3 9 1 1 3 5 ...
output:
34779
result:
ok answer is '34779'
Test #24:
score: 0
Accepted
time: 20ms
memory: 21076kb
input:
97725 3991 3 1981 19967 11964 15578 16466 22908 26096 13582 2927 5535 23996 18131 27312 8677 21011 5011 10177 1722 9529 21839 22490 11927 4229 15298 22299 15233 7997 13613 5127 5844 27128 27550 12072 24859 4560 25518 2412 21683 2011 4871 10669 5689 18392 15052 19496 12803 14508 1131 21130 4319 14520...
output:
6
result:
ok answer is '6'
Test #25:
score: 0
Accepted
time: 216ms
memory: 152712kb
input:
934066 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 1...
output:
1468132
result:
ok answer is '1468132'
Test #26:
score: 0
Accepted
time: 157ms
memory: 127204kb
input:
959504 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3...
output:
1679129
result:
ok answer is '1679129'
Test #27:
score: 0
Accepted
time: 200ms
memory: 75748kb
input:
906335 34453 21510 58631 37062 98753 171711 90398 8616 136357 132511 175779 95425 191426 92515 195256 196920 35496 148933 65051 48297 14535 197160 62461 106747 20973 189201 43538 132425 138231 114473 14109 109676 88427 194981 24743 189284 134788 124796 138191 120524 4607 61492 127967 113633 1 80151 ...
output:
9023
result:
ok answer is '9023'
Test #28:
score: 0
Accepted
time: 202ms
memory: 120584kb
input:
1000000 1 3 2 2 5 4 3 4 5 1 2 4 1 4 4 5 2 4 2 5 1 5 3 4 1 3 2 3 5 4 2 2 5 4 4 1 1 1 3 3 4 5 2 3 1 2 3 4 1 3 1 5 2 5 5 1 2 3 2 2 5 3 4 4 5 1 3 4 3 5 1 2 4 1 5 1 1 2 4 5 1 4 3 5 4 5 5 4 1 3 4 2 4 3 4 4 3 3 5 2 1 4 3 2 4 1 4 1 4 1 1 4 1 2 2 1 2 5 5 5 2 3 4 4 4 5 4 1 1 1 5 3 1 1 4 1 4 3 1 2 3 3 2 1 4 1 ...
output:
418855
result:
ok answer is '418855'
Test #29:
score: 0
Accepted
time: 186ms
memory: 82848kb
input:
1000000 28 35 63 30 9 100 91 99 4 53 82 31 47 90 60 61 9 11 66 39 100 92 80 90 7 84 77 33 77 42 5 26 47 77 71 38 55 17 85 21 41 49 23 97 63 19 47 49 64 77 99 89 15 14 99 1 74 1 39 6 29 75 58 29 54 26 72 43 46 20 76 77 10 68 30 38 77 49 60 54 47 64 90 44 81 77 64 32 45 8 87 79 44 12 79 81 86 46 13 86...
output:
20255
result:
ok answer is '20255'
Test #30:
score: 0
Accepted
time: 212ms
memory: 73420kb
input:
1000000 564517 891696 791301 713585 134375 360177 75142 392645 204461 159684 581342 222907 180546 809401 1 35674 720977 85182 80111 434415 150433 23418 201171 361324 17900 559650 68645 26717 522524 288340 55921 610313 424388 4574 47645 520804 39093 894551 495449 742476 980671 658922 429460 970726 26...
output:
9956
result:
ok answer is '9956'
Test #31:
score: 0
Accepted
time: 204ms
memory: 81548kb
input:
1000000 133 155 289 127 176 72 79 1 129 138 193 77 66 22 40 43 39 76 145 52 21 118 27 96 273 136 201 116 223 137 246 123 235 260 159 252 245 64 165 200 90 297 12 263 189 282 135 132 3 78 237 232 178 128 71 31 17 109 164 274 142 15 299 174 158 276 222 177 160 5 293 238 230 202 141 171 281 254 213 248...
output:
6766
result:
ok answer is '6766'
Test #32:
score: 0
Accepted
time: 215ms
memory: 104756kb
input:
1000000 1 2 7 5 8 3 6 9 4 5 7 1 2 4 8 6 9 3 2 3 8 1 6 5 7 9 4 4 2 5 8 1 7 9 6 3 7 8 5 9 3 4 1 2 6 5 9 7 2 8 3 1 6 4 9 1 8 6 3 2 7 4 5 8 2 3 6 1 7 9 5 4 7 6 9 4 3 1 5 8 2 2 7 4 6 3 9 5 1 8 8 4 2 6 5 1 3 9 7 6 7 3 4 9 1 5 8 2 6 8 2 1 4 9 7 3 5 3 1 8 7 4 5 9 6 2 4 9 7 5 3 6 1 2 8 9 1 6 2 3 7 8 4 5 6 8 ...
output:
363511
result:
ok answer is '363511'
Test #33:
score: 0
Accepted
time: 204ms
memory: 80184kb
input:
1000000 8550 24021 11396 16837 23236 11754 9313 13431 19413 5620 8363 23943 6484 22736 2710 5465 19164 27285 28063 18460 25430 17875 24991 3345 23701 23570 18321 404 9478 18257 12212 21740 8546 13860 20203 11091 15458 18494 7356 10739 16877 24200 22593 29335 10693 24479 24851 2618 15109 8316 28884 1...
output:
66
result:
ok answer is '66'
Test #34:
score: 0
Accepted
time: 215ms
memory: 104372kb
input:
1000000 4 2 3 1 5 6 7 8 9 3 2 1 4 5 6 7 8 9 9 2 3 4 5 6 7 8 1 1 2 3 4 5 9 7 8 6 1 2 3 4 5 6 7 8 9 1 9 3 4 5 6 7 8 2 1 2 3 4 7 6 5 8 9 3 2 1 4 5 6 7 8 9 1 2 3 4 5 6 9 8 7 1 2 3 5 4 6 7 8 9 1 2 3 7 5 6 4 8 9 8 2 3 4 5 6 7 1 9 1 2 4 3 5 6 7 8 9 1 2 3 4 5 7 6 8 9 1 9 3 4 5 6 7 8 2 1 2 8 4 5 6 7 3 9 1 9 ...
output:
1108920
result:
ok answer is '1108920'
Test #35:
score: 0
Accepted
time: 230ms
memory: 91532kb
input:
1000000 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 ...
output:
1151292
result:
ok answer is '1151292'