QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#664598#2788. HorsesPioneer34 11ms11980kbC++202.9kb2024-10-21 21:22:442024-10-21 21:22:45

Judging History

你现在查看的是最新测评结果

  • [2024-10-21 21:22:45]
  • 评测
  • 测评结果:34
  • 用时:11ms
  • 内存:11980kb
  • [2024-10-21 21:22:44]
  • 提交

answer

#include "horses.h"
#include <bits/stdc++.h>

#define ll long long
using namespace std;

const ll inf=1e9;
const int mod=1e9+7;
const int MAX=5e5+10;

struct segtree{
	pair<int,bool> t[4*MAX];

	pair<int,bool> mrg(pair<int,bool> a,pair<int,bool> b){
		pair<int,bool> res={a.first*1ll*b.first%mod,(a.second|b.second)};
		if(a.first*1ll*b.first>=mod){
			res.second=1;
		}
		return res;
	}

	void update(int v,int tl,int tr,int pos,int x){
		if(tl==tr){
			t[v]={x,0};
			return;
		}
		int tm=(tl+tr)/2;
		if(pos<=tm)update(2*v,tl,tm,pos,x);
		else update(2*v+1,tm+1,tr,pos,x);
		t[v]=mrg(t[2*v],t[2*v+1]);
	}


	pair<int,bool> get(int v,int tl,int tr,int l,int r){
		if(l>r||tl>r||l>tr)return {1,0};
		if(l<=tl&&tr<=r)return t[v];
		int tm=(tl+tr)/2;
		return mrg(get(2*v,tl,tm,l,r),get(2*v+1,tm+1,tr,l,r));
	}
}tx;

struct segtreeMx{
	pair<int,int> t[MAX];

	pair<int,int> mrg(pair<int,int> a,pair<int,int> b){
		if(a.first>=b.first)return a;
		else return b;
	}

	void update(int v,int tl,int tr,int pos,int x){
		if(tl==tr){
			t[v]={x,tl};
			return;
		}
		int tm=(tl+tr)/2;
		if(pos<=tm)update(2*v,tl,tm,pos,x);
		else update(2*v+1,tm+1,tr,pos,x);
		t[v]=mrg(t[2*v],t[2*v+1]);
	}

	pair<int,int> get(int v,int tl,int tr,int l,int r){
		if(l>r||tl>r||l>tr)return {0,0};
		if(l<=tl&&tr<=r)return t[v];
		int tm=(tl+tr)/2;
		return mrg(get(2*v,tl,tm,l,r),get(2*v+1,tm+1,tr,l,r));
	}
}ty;

int n;
set<int> st;
int x[MAX];
int y[MAX];

int get(int pos){
	int ans=1;
	for(int i=1;i<=pos;i++)ans=ans*1ll*x[i]%mod;
	return ans*1ll*y[pos]%mod;
	return tx.get(1,1,n,1,pos).first*1ll*y[pos]%mod;
}

int get(){
	{
		int pos=n;
		int per=x[n]*1ll*y[n]%mod;
		bool bf=0;
		if(x[n]*1ll*y[n]>=mod)bf=1;
		for(int i=n-1;i>=max(1,n-1000);i--){
			if(!bf&&y[i]>=per){
				pos=i;
				per=y[i];
				bf=0;
			}
			if(per*1ll*x[i]>=mod){
				bf=1;
			}
			per=per*1ll*x[i]%mod;
		}
		return get(pos);
	}
	st.insert(1);
	vector<int> vec;
	int pos=ty.get(1,1,n,*st.rbegin(),n).second;
	vec.push_back(*st.rbegin());
	st.erase(--st.end());
	while(!st.empty()){
		int pos1=ty.get(1,1,n,*st.rbegin(),vec.back()-1).second;
		vec.push_back(*st.rbegin());
		st.erase(--st.end());
		pair<int,bool> bf=tx.get(1,1,n,pos1+1,pos);
		if(bf.second||bf.first*1ll*y[pos]>=mod)break;
		if(bf.first*y[pos]<=y[pos1])pos=pos1;
	}
	for(int x:vec)st.insert(x);
	return get(pos);
}

int init(int N, int X[], int Y[]) {
	n=N;
	for(int i=0;i<N;i++){
		y[i+1]=Y[i];
		x[i+1]=X[i];
		tx.update(1,1,N,i+1,X[i]);
		ty.update(1,1,N,i+1,Y[i]);
		if(X[i]!=1){
			st.insert(i+1);
		}
	}
	return get();
}

int updateX(int pos, int val) {	
	pos++;
	if(x[pos]!=1)st.erase(pos);
	x[pos]=val;
	tx.update(1,1,n,pos,val);
	if(x[pos]!=1)st.insert(pos);
	return get();
}

int updateY(int pos, int val) {
	pos++;
	y[pos]=val;
	ty.update(1,1,n,pos,val);
	return get();
}

詳細信息

Subtask #1:

score: 17
Accepted

Test #1:

score: 17
Accepted
time: 0ms
memory: 9940kb

input:

1
2
3
0

output:

6

result:

ok single line: '6'

Test #2:

score: 17
Accepted
time: 1ms
memory: 7848kb

input:

10
2 1 1 5 2 1 1 10 5 1
3 5 7 9 4 1 4 10 10 9
0

output:

10000

result:

ok single line: '10000'

Test #3:

score: 17
Accepted
time: 0ms
memory: 9952kb

input:

10
10 10 10 1 1 1 1 1 1 1
2 3 4 2 7 6 5 4 3 2
0

output:

7000

result:

ok single line: '7000'

Test #4:

score: 17
Accepted
time: 0ms
memory: 7980kb

input:

10
9 1 1 1 1 1 1 1 1 2
4 1 1 1 1 1 1 1 1 2
0

output:

36

result:

ok single line: '36'

Test #5:

score: 17
Accepted
time: 1ms
memory: 10092kb

input:

10
1 1 1 1 1 1 1 1 1 1
1 2 3 4 5 6 7 8 9 10
0

output:

10

result:

ok single line: '10'

Test #6:

score: 17
Accepted
time: 1ms
memory: 7860kb

input:

10
1 1 1 1 1 1 1 1 1 1
10 9 8 7 6 5 4 3 2 1
0

output:

10

result:

ok single line: '10'

Test #7:

score: 17
Accepted
time: 1ms
memory: 7852kb

input:

10
10 10 10 1 1 1 1 1 1 1
10 10 2 3 4 5 6 7 8 9
0

output:

9000

result:

ok single line: '9000'

Test #8:

score: 17
Accepted
time: 1ms
memory: 9892kb

input:

10
10 10 10 1 1 1 1 1 1 1
10 10 9 8 7 6 5 4 3 2
0

output:

9000

result:

ok single line: '9000'

Test #9:

score: 17
Accepted
time: 1ms
memory: 10032kb

input:

10
1 1 1 1 2 2 1 1 1 1
8 8 8 8 1 1 2 2 2 2
0

output:

8

result:

ok single line: '8'

Test #10:

score: 17
Accepted
time: 1ms
memory: 10024kb

input:

10
1 1 1 1 1 1 1 1 1 1
1 2 3 4 5 9 8 7 6 1
0

output:

9

result:

ok single line: '9'

Test #11:

score: 17
Accepted
time: 1ms
memory: 10056kb

input:

2
2 5
9 7
0

output:

70

result:

ok single line: '70'

Test #12:

score: 17
Accepted
time: 0ms
memory: 10028kb

input:

1
1
1
0

output:

1

result:

ok single line: '1'

Test #13:

score: 17
Accepted
time: 1ms
memory: 9892kb

input:

7
7 1 1 6 2 3 2
7 6 5 4 3 7 1
0

output:

1764

result:

ok single line: '1764'

Test #14:

score: 17
Accepted
time: 1ms
memory: 7912kb

input:

1
10
10
0

output:

100

result:

ok single line: '100'

Test #15:

score: 17
Accepted
time: 1ms
memory: 9956kb

input:

2
1 4
7 2
0

output:

8

result:

ok single line: '8'

Test #16:

score: 17
Accepted
time: 1ms
memory: 9960kb

input:

10
1 10 1 10 1 1 10 1 1 1
7 3 10 10 4 10 1 4 5 10
0

output:

10000

result:

ok single line: '10000'

Test #17:

score: 17
Accepted
time: 0ms
memory: 9888kb

input:

6
1 1 1 1 1 1
1 1 1 1 1 1
0

output:

1

result:

ok single line: '1'

Test #18:

score: 17
Accepted
time: 1ms
memory: 9956kb

input:

4
1 2 4 8
8 4 2 1
0

output:

64

result:

ok single line: '64'

Test #19:

score: 17
Accepted
time: 0ms
memory: 9956kb

input:

6
1 2 2 3 1 1
7 1 1 2 1 1
0

output:

24

result:

ok single line: '24'

Test #20:

score: 17
Accepted
time: 0ms
memory: 9896kb

input:

10
2 1 1 5 2 1 1 10 5 1
3 5 7 9 4 1 4 10 7 9
0

output:

9000

result:

ok single line: '9000'

Subtask #2:

score: 17
Accepted

Dependency #1:

100%
Accepted

Test #21:

score: 17
Accepted
time: 1ms
memory: 9956kb

input:

10
10 10 10 10 10 10 1 1 1 1
1 1 1 1 9 5 4 7 3 2
5
1 5 1
2 5 123456789
1 5 1
1 8 987654321
1 9 777777777

output:

7000000
900000
678813585
678813585
294225928
75803567

result:

ok 6 lines

Test #22:

score: 17
Accepted
time: 0ms
memory: 10088kb

input:

10
3 2 7 5 11 13 107 23 51 3
1 1 1 1 1000000000 1 1 1 1 1
16
1 1 1
1 2 1
1 0 1
1 8 1
1 7 1
1 9 1
1 1 25
1 8 123456789
1 4 1
1 6 1
1 3 1
1 5 1
1 5 12345
1 6 123456
1 7 1234567
2 4 3

output:

999983837
999991922
999998852
999999622
999999622
999999622
999999622
999990382
539408243
49037113
617280725
123456145
999999832
851238418
489396978
354709175
354709175

result:

ok 17 lines

Test #23:

score: 17
Accepted
time: 10ms
memory: 10052kb

input:

1000
179278145 423054674 671968267 409599985 828900464 393298292 569389961 360810107 205374067 618910650 76768983 62623743 225944805 498579132 917750714 600860488 642568763 21949846 852642376 283772010 299085842 669257630 544180666 249770466 320727298 612199337 15873453 726595389 219129403 876893450...

output:

394559852
394559852
394559852
394559852
868802752
868802752
868802752
868802752
165967503
244287754
244287754
270995710
270995710
270995710
247981131
247981131
237849527
24662481
24662481
451435926
989677577
989677577
704081481
704081481
704081481
704081481
704081481
631761803
631761803
631761803
80...

result:

ok 1001 lines

Test #24:

score: 17
Accepted
time: 10ms
memory: 9928kb

input:

1000
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1...

output:

858314903
362189740
362189740
362189740
362189740
362189740
347762296
347762296
347762296
347762296
347762296
347762296
297139175
297139175
56337247
56337247
56337247
919555391
919555391
223551221
223551221
223551221
674943421
674943421
674943421
674943421
674943421
160231649
160231649
242692758
242...

result:

ok 1001 lines

Test #25:

score: 17
Accepted
time: 7ms
memory: 10004kb

input:

1000
1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 100000000...

output:

426490853
426490853
426490853
426490853
224787023
224787023
110744712
110744712
110744712
682644373
841322190
841322190
594096835
973115198
7681374
712091041
712091041
712091041
712091041
712091041
712091041
712091041
326844140
326844140
163422070
326844140
326844140
326844140
163422070
163422070
16...

result:

ok 1001 lines

Test #26:

score: 17
Accepted
time: 10ms
memory: 9992kb

input:

1000
1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 1000000000 100000000...

output:

426490853
224787023
110744712
110744712
110744712
110744712
110744712
110744712
110744712
110744712
841322190
188193663
188193663
973115198
973115198
486557599
486557599
486557599
501920347
501920347
214011381
214011381
214011381
214011381
214011381
214011381
214011381
214011381
540855521
81711035
8...

result:

ok 1001 lines

Test #27:

score: 17
Accepted
time: 10ms
memory: 10072kb

input:

1000
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1...

output:

1
111838200
111838200
141345155
141345155
141345155
347215940
347215940
462493672
462493672
462493672
475246965
475246965
475246965
475246965
475246965
475246965
475246965
475246965
475246965
475246965
475246965
475246965
475246965
475246965
475246965
475246965
475246965
475246965
475246965
47524696...

result:

ok 1001 lines

Test #28:

score: 17
Accepted
time: 11ms
memory: 11980kb

input:

999
1 2 1 6 1 7 1 8 1 2 1 9 1 4 1 2 1 6 1 6 1 10 1 3 1 7 1 2 1 8 1 5 1 5 1 2 1 9 1 6 1 9 1 9 1 4 1 8 1 10 1 4 1 2 1 7 1 4 1 9 1 3 1 10 1 6 1 3 1 10 1 9 1 4 1 2 1 10 1 2 1 4 1 10 1 3 1 7 1 9 1 2 1 4 1 5 1 6 1 2 1 10 1 8 1 2 1 5 1 6 1 6 1 8 1 3 1 10 1 9 1 3 1 3 1 4 1 6 1 5 1 6 1 5 1 6 1 4 1 2 1 8 1 2 ...

output:

894825221
894825221
894825221
894825221
894825221
894825221
894825221
894825221
894825221
894825221
894825221
894825221
894825221
894825221
894825221
894825221
894825221
894825221
894825221
894825221
894825221
894825221
894825221
894825221
894825221
894825221
894825221
894825221
894825221
894825221
...

result:

ok 1001 lines

Test #29:

score: 17
Accepted
time: 9ms
memory: 9964kb

input:

1000
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1...

output:

1
2
2
4
8
16
16
32
32
16
8
4
2
2
2
2
4
4
4
8
8
8
8
4
2
4
4
8
16
32
32
16
16
8
4
2
2
2
2
2
2
4
2
2
2
2
2
2
4
4
4
2
4
4
8
16
32
32
16
8
4
4
2
2
4
4
2
2
4
4
4
8
16
16
8
16
16
16
8
16
8
4
2
2
2
4
8
16
32
32
16
16
16
8
4
8
8
4
4
4
2
1
1
1
1
1
2
2
4
4
8
8
8
8
16
16
16
32
16
8
8
4
2
4
4
2
2
4
2
4
4
8
8
8
4...

result:

ok 1001 lines

Test #30:

score: 17
Accepted
time: 9ms
memory: 7968kb

input:

1000
449878747 910674510 165143519 796141357 640922692 573949623 473255861 694971928 923936963 520980628 407779878 356558322 959023188 533793940 402247935 460440718 261337138 763084309 477743089 457285505 21664165 849032387 495576190 421984304 467773902 838138184 169975811 805107419 502174869 375370...

output:

392927667
3019699
252703129
967234835
690465334
745063314
648310471
594657147
797483498
960494972
217493779
741093774
398194406
336083786
400370081
595436661
30471347
875039519
60963593
516858978
480652068
726643394
673856666
237413719
45909014
783589282
600072636
214213285
409343465
506112870
19369...

result:

ok 1001 lines

Test #31:

score: 17
Accepted
time: 8ms
memory: 9948kb

input:

1000
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1...

output:

1048576
1048576
1048576
1048576
1048576
1048576
1048576
1048576
1048576
1048576
1048576
1048576
1048576
1048576
1048576
1048576
1048576
1048576
1048576
1048576
1048576
1048576
2097152
4194304
8388608
16777216
33554432
67108864
134217728
268435456
536870912
536870912
536870912
536870912
536870912
536...

result:

ok 1001 lines

Test #32:

score: 17
Accepted
time: 8ms
memory: 9964kb

input:

1000
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1...

output:

73741817
999999993
1000000000
1000000000
73741817
999999993
1000000000
1000000000
73741817
999999993
1000000000
1000000000
73741817
999999993
1000000000
1000000000
73741817
999999993
1000000000
1000000000
73741817
999999993
1000000000
1000000000
73741817
999999993
1000000000
1000000000
73741817
9999...

result:

ok 1001 lines

Subtask #3:

score: 0
Time Limit Exceeded

Test #33:

score: 0
Time Limit Exceeded

input:

500000
2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2...

output:

967631222
967631222
795463654
885679347
618832158
618832158
618832158
618832158
618832158
582471866
864166718
864166718
864166718
864166718
864166718
813424701
813424701
813424701
813424701
813424701
815547130
815547130
815547130
815547130
815547130
715585103
715585103
715585103
715585103
715585103
...

result:


Subtask #4:

score: 0
Time Limit Exceeded

Dependency #2:

100%
Accepted

Test #37:

score: 0
Time Limit Exceeded

input:

500000
179278145 423054674 671968267 409599985 828900464 393298292 569389961 360810107 205374067 618910650 76768983 62623743 225944805 498579132 917750714 600860488 642568763 21949846 852642376 283772010 299085842 669257630 544180666 249770466 320727298 612199337 15873453 726595389 219129403 8768934...

output:

419054251
419054251
419054251
419054251
419054251
419054251
419054251
419054251
419054251
179710923
179710923
286534476
96643904
741760657
313380467
342283411
273971428
983651544
248973498
248973498
109729116
535596707
914708832
914708832
914708832
914708832
914708832
936044725
27945563
27945563
279...

result:


Subtask #5:

score: 0
Skipped

Dependency #1:

100%
Accepted

Dependency #2:

100%
Accepted

Dependency #3:

0%