QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#368072#3918. Permutations againKLPP#AC ✓230ms152712kbC++202.1kb2024-03-26 19:41:432024-03-26 19:41:45

Judging History

This is the latest submission verdict.

  • [2024-03-26 19:41:45]
  • Judged
  • Verdict: AC
  • Time: 230ms
  • Memory: 152712kb
  • [2024-03-26 19:41:43]
  • Submitted

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();
	}
}

详细

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'