QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#446146#3276. 出题高手lcs08020650 539ms24672kbC++141.9kb2024-06-16 22:39:392024-06-16 22:39:39

Judging History

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

  • [2024-06-16 22:39:39]
  • 评测
  • 测评结果:50
  • 用时:539ms
  • 内存:24672kb
  • [2024-06-16 22:39:39]
  • 提交

answer

#include<bits/stdc++.h>
#define int long long
#define N 100005
using namespace std;

int gcd(int x,int y){return y==0?x:gcd(y,x%y);}

int n,m,a[N*5],sum[N*5];
struct node{
	int x,y;
}tr[N*4],ans[N];
vector<node>qr[N];
bool operator < (node x,node y){
	if(x.y==0||y.y==0)return x.y==0;
	return x.x*y.y<y.x*x.y;
}
node Max(node x,node y){
	return (x<y)?y:x;
}

void upd(int x,int l,int r,int t,node val){
	if(l==r){
		tr[x]=Max(tr[x],val);return;
	}
	int mid=l+r>>1;
	if(mid>=t)upd(x<<1,l,mid,t,val);
	else upd(x<<1|1,mid+1,r,t,val);
	tr[x]=Max(tr[x<<1],tr[x<<1|1]);
	return;
}
node query(int x,int l,int r,int tl,int Tr){
	if(l>Tr||r<tl)return (node){0,0};
	if(l>=tl&&r<=Tr)return tr[x];
	int mid=l+r>>1;
	return Max(query(x<<1,l,mid,tl,Tr),query(x<<1|1,mid+1,r,tl,Tr));
}

signed main(){
	scanf("%lld",&n);
	for(int i=1;i<=n;++i)scanf("%lld",&a[i]),sum[i]=sum[i-1]+a[i];
	scanf("%lld",&m);
	for(int i=1,x,y;i<=m;++i){
		scanf("%lld%lld",&x,&y);
		qr[x].push_back((node){i,y});
	}
	if(m==1){
		node Ans=(node){0,1};
		for(int i=n;i>=1;--i){
			if(a[i]==0)continue;
			for(int j=i;j<=n;++j){
				if((sum[j]-sum[i-1]<0)!=(a[i]<0))break;
				if(j-i+1>400)break;
				node val=(node){(sum[j]-sum[i-1])*(sum[j]-sum[i-1]),j-i+1};
				Ans=Max(Ans,val);
			}
		}
		int x=gcd(Ans.x,Ans.y);
		printf("%lld %lld",Ans.x/x,Ans.y/x);
		return 0;
	}
	for(int i=1;i<=n*4;++i)tr[i]=(node){0,0};
	for(int i=n;i>=1;--i){
		if(a[i]==0){
			upd(1,1,n,i,(node){0,1});
		}
		else{
			for(int j=i;j<=n;++j){
				if((sum[j]-sum[i-1]<0)!=(a[i]<0))break;
				if(j-i+1>400)break;
				node val=(node){(sum[j]-sum[i-1])*(sum[j]-sum[i-1]),j-i+1};
				upd(1,1,n,j,val);
			}
		}
		for(int j=0;j<qr[i].size();++j){
			ans[qr[i][j].x]=query(1,1,n,i,qr[i][j].y);
			int X=gcd(ans[qr[i][j].x].x,ans[qr[i][j].x].y);
			ans[qr[i][j].x].x/=X;ans[qr[i][j].x].y/=X;
		}
	}
	for(int i=1;i<=m;++i)printf("%lld %lld\n",ans[i].x,ans[i].y);
	return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Subtask #1:

score: 5
Accepted

Test #1:

score: 5
Accepted
time: 37ms
memory: 13236kb

input:

2000
-113 314 -664 697 211 -199 -38 -190 8 -661 910 -811 -113 942 77 433 -261 -368 129 -525 968 -608 -21 38 -562 438 -935 -228 220 333 985 -430 916 586 764 476 794 664 383 503 206 -60 380 -130 -988 -904 -996 -304 -286 31 114 119 850 -942 714 -369 -842 250 -192 -462 -727 -427 -602 126 231 718 121 559...

output:

54826875 11
14638276 7
1185921 1
81018001 24
6310144 3
12545764 5
3362000 1
23068809 8
23068809 8
12545764 5
1444908 1
5424241 3
1083603 1
2140369 1
2752281 2
3095072 1
3003289 2
4959529 2
17106496 13
4780232 1
89605156 31
8543929 4
129163225 48
5094049 2
68591524 23
8543929 4
35688676 11
3775249 1
...

result:

ok 200000 numbers

Test #2:

score: 0
Accepted
time: 34ms
memory: 14236kb

input:

2000
717 273 112 -879 -487 -164 -403 -895 391 721 223 895 -34 146 -779 -84 253 44 690 716 975 -625 844 731 204 457 -790 349 -739 610 -536 -561 721 -868 -967 68 729 878 672 -158 -395 -836 383 -634 -371 -262 -443 -123 -20 354 198 171 681 -390 -964 954 735 713 -904 -900 -522 561 -639 -86 326 -479 448 -...

output:

82773604 23
58201641 20
2289169 1
40500496 19
1849372 1
12759184 5
2896804 1
14775048 7
7636232 5
1806005 1
3179089 2
26388769 16
1638050 1
2778889 2
156275001 49
17181522 7
2289169 1
6817321 3
758912 1
40500496 19
4941729 2
8276763 5
5841889 3
3250809 2
1806005 1
2289169 1
156275001 49
9684544 5
25...

result:

ok 200000 numbers

Test #3:

score: 0
Accepted
time: 34ms
memory: 12980kb

input:

2000
-851 -108 -432 344 -251 251 529 923 363 -346 416 -296 -686 832 565 66 150 -492 70 0 -977 -275 -454 -409 -979 353 -511 -458 -403 632 250 -689 -15 773 664 -386 931 -866 436 -213 711 -961 662 -849 -286 -143 -7 -933 960 -523 135 -609 86 408 643 -147 437 411 -580 -184 735 -968 417 977 863 325 518 83...

output:

15984004 5
2520500 1
49900050 19
28451556 13
12830724 5
2975625 2
24157225 11
1733522 1
11909401 4
15864289 5
8487200 3
1733522 1
1733522 1
6993800 3
15721225 6
1937664 1
3411409 2
11377129 5
2849344 3
1594323 1
15984004 5
15864289 5
7557001 6
2050624 1
2286387 1
1733522 1
49900050 19
5320322 3
3910...

result:

ok 200000 numbers

Test #4:

score: 0
Accepted
time: 36ms
memory: 12864kb

input:

2000
269 60 -850 537 -525 -153 877 649 998 -864 -642 -77 -69 -127 537 315 -521 -922 -629 277 162 -541 659 -572 -542 -203 -997 494 364 156 276 -780 -274 94 -410 -215 -700 -840 -906 352 972 -61 824 -973 841 80 -180 634 496 -111 934 -692 328 151 297 -13 -465 380 450 -324 -367 40 318 -447 -820 -340 -107...

output:

41190724 9
1872300 1
3530641 1
12061729 7
17032129 6
7873636 3
21641104 7
100876808 37
7946761 5
10246401 4
1836025 1
12061729 7
1836025 1
2490010 1
1687500 1
7946761 5
3613801 2
14768649 5
11404129 5
7873636 3
22033636 15
10246401 4
10067929 4
1453248 1
41190724 9
9006001 5
1718658 1
5428900 3
4452...

result:

ok 200000 numbers

Test #5:

score: 0
Accepted
time: 35ms
memory: 13812kb

input:

2000
599 530 -362 736 -402 -252 901 -481 318 -100 716 -726 221 -887 217 455 -516 -948 -10 -963 -373 42 -968 -949 -440 -643 -649 35 197 64 -141 -465 -975 -804 -735 -847 396 100 -131 219 543 571 -566 653 -308 725 105 668 -509 416 309 -945 260 -302 -704 -914 -648 495 -595 32 -831 -607 -104 373 -810 -12...

output:

1154640400 203
2812329 1
11826721 4
35224225 11
3276726 1
74528689 18
11539609 5
24433249 12
1431432 1
17884441 6
51739249 12
2339280 1
1565001 1
2354988 1
3276726 1
1920800 1
11539609 5
21846050 11
964324 1
11548332 5
5433561 4
142324900 29
31102929 17
35224225 11
1569992 1
8720209 4
8892324 5
6165...

result:

ok 200000 numbers

Subtask #2:

score: 15
Accepted

Test #6:

score: 15
Accepted
time: 11ms
memory: 13076kb

input:

100000
754 792 -680 426 425 347 481 -690 530 378 73 -907 -431 45 -530 -552 440 -890 -15 712 695 -679 -310 13 718 805 193 -291 -877 -74 -355 511 -679 -395 166 -710 -657 -19 874 26 832 507 854 -289 700 -404 472 -302 -977 8 -698 40 766 705 369 838 700 -964 552 -535 -75 -608 -181 -503 468 447 772 904 -2...

output:

466344025 67

result:

ok 2 number(s): "466344025 67"

Test #7:

score: 0
Accepted
time: 11ms
memory: 9720kb

input:

100000
-387 -313 -47 -714 -74 239 8 591 541 -633 -660 981 -230 -148 -813 -802 -108 -543 -640 50 962 137 -972 -936 -975 885 793 -541 932 861 -348 885 -280 -977 -677 964 355 604 54 -977 -548 979 -516 136 437 -697 -23 -748 492 897 -538 785 617 -840 675 -978 307 -288 -493 682 678 -623 613 762 -622 -283 ...

output:

2417885584 385

result:

ok 2 number(s): "2417885584 385"

Test #8:

score: 0
Accepted
time: 7ms
memory: 14568kb

input:

100000
-127 303 92 -235 -794 293 -272 199 -175 693 -799 -750 -501 -283 -358 -657 -867 -152 -399 -299 530 -5 285 959 390 -928 617 -478 -889 -133 -492 -855 986 -664 -984 -690 887 -738 39 -570 -268 -767 640 883 711 -748 -75 426 -268 -541 -926 -792 902 214 561 -428 -285 781 -225 -299 -233 134 -896 569 -...

output:

202236841 30

result:

ok 2 number(s): "202236841 30"

Test #9:

score: 0
Accepted
time: 11ms
memory: 12696kb

input:

100000
-340 -696 48 -515 -584 -60 -888 257 214 -889 782 915 905 -964 -536 459 779 -519 -338 -867 622 -902 655 -153 600 -117 269 -887 -242 -985 -267 132 406 98 -368 400 -871 -908 -489 118 -140 -755 -869 -943 965 609 47 -748 194 -160 994 527 871 119 -891 580 -687 865 826 56 -978 -775 -47 792 313 -944 ...

output:

272184004 39

result:

ok 2 number(s): "272184004 39"

Test #10:

score: 0
Accepted
time: 12ms
memory: 13172kb

input:

100000
-736 -691 738 209 -411 -136 792 -110 -441 -753 254 744 -958 -317 312 856 245 995 912 87 -830 131 393 37 -400 934 279 -784 -308 618 -647 967 527 -162 -874 -770 188 -917 -855 772 482 -373 -749 -40 80 -459 710 -354 221 -343 -132 -947 -445 62 -744 851 848 554 -530 -892 -721 -910 -642 -138 -480 -7...

output:

393070276 51

result:

ok 2 number(s): "393070276 51"

Subtask #3:

score: 30
Accepted

Test #11:

score: 30
Accepted
time: 68ms
memory: 14436kb

input:

500000
794 -75 -596 -322 -945 -908 -609 -164 488 626 -877 -710 140 -120 -475 -837 738 669 634 -643 -682 667 816 -785 -608 -836 -860 -932 242 70 -620 268 -121 288 209 -392 732 750 558 -480 565 327 -217 -891 767 211 -690 -66 813 -889 952 615 432 19 411 800 678 718 522 422 940 -510 -544 449 -357 640 40...

output:

1878442281 242

result:

ok 2 number(s): "1878442281 242"

Test #12:

score: 0
Accepted
time: 65ms
memory: 16052kb

input:

500000
145 33 695 -456 761 -556 698 272 121 -445 100 -93 954 485 161 798 -279 921 456 570 151 -880 456 -640 -69 385 -301 -707 -84 -514 -964 597 874 346 841 274 -727 -177 -44 -883 903 -792 -776 926 416 -862 -247 -985 518 674 174 535 -295 960 -952 722 -947 -365 366 -520 -60 -404 800 811 -139 779 735 3...

output:

457831609 56

result:

ok 2 number(s): "457831609 56"

Test #13:

score: 0
Accepted
time: 67ms
memory: 14352kb

input:

500000
762 -391 336 983 -962 920 -428 955 487 -525 281 514 851 -508 607 153 -439 -307 345 557 -615 -997 272 813 -556 -69 -401 -625 143 -142 -499 380 749 613 -190 173 -633 -489 -285 183 -799 645 -863 379 169 -177 993 -184 753 346 58 770 254 705 -467 -700 -337 587 -333 685 -1 -618 -961 327 -33 -722 65...

output:

1160015481 110

result:

ok 2 number(s): "1160015481 110"

Test #14:

score: 0
Accepted
time: 59ms
memory: 14088kb

input:

500000
-819 -236 -303 662 -316 -328 51 821 717 -423 -565 -394 858 -816 -246 -993 831 -999 237 779 52 -642 826 945 307 -675 83 -715 -797 -451 -250 996 53 -765 -869 -717 -126 -250 532 -848 82 -100 542 80 798 701 -648 -433 234 362 462 -770 554 -211 -368 -653 897 -940 416 632 734 -18 727 319 -328 697 11...

output:

188897536 23

result:

ok 2 number(s): "188897536 23"

Test #15:

score: 0
Accepted
time: 64ms
memory: 14348kb

input:

500000
-161 619 -969 31 102 781 561 617 -685 -814 385 -998 911 -206 -404 519 276 -318 -731 -908 901 856 839 333 124 481 29 407 -315 -219 896 956 -286 996 -991 -800 951 109 -846 624 750 -88 955 -752 -814 134 -316 -777 844 391 359 -324 789 -713 -620 849 -553 575 357 792 -735 -828 373 378 -213 -501 -29...

output:

167832025 17

result:

ok 2 number(s): "167832025 17"

Subtask #4:

score: 0
Wrong Answer

Test #16:

score: 0
Wrong Answer
time: 406ms
memory: 16904kb

input:

100000
-496 -233 354 -632 -196 177 -878 -255 -19 -636 685 -70 101 -975 -406 -988 -965 -205 563 -766 763 511 -116 -746 -129 14 106 928 -457 -257 -283 226 3 899 -359 -792 615 490 -57 986 -243 624 -239 931 -555 -821 -72 -611 -380 -397 248 -132 956 -195 -322 -231 319 -214 837 -379 -931 -301 -4 -673 280 ...

output:

1352474176 205
13957947 4
67914081 16
33243858 7
10885778 3
27836176 7
50680161 11
235284921 74
106770889 25
2411809 2
2835045 1
14017536 5
134699236 43
286523329 74
28100601 11
17546888 5
23396569 6
80839443 25
4012009 3
2661336 1
42947912 11
3474284 1
61496964 19
3672245 1
6120676 3
7573504 3
1489...

result:

wrong answer 915th numbers differ - expected: '574800625', found: '1288594609'

Subtask #5:

score: 0
Wrong Answer

Test #31:

score: 0
Wrong Answer
time: 539ms
memory: 24672kb

input:

100000
139 -485 -497 -818 254 169 -560 22 377 -67 -243 -75 743 -788 -676 -26 -775 371 576 -303 54 733 422 800 445 687 479 -16 -288 259 783 -586 912 616 439 -416 676 -555 172 659 501 -868 337 22 -60 260 603 -982 -149 466 769 -595 -117 949 -544 904 753 20 776 175 -888 937 -792 -647 -615 59 -298 452 -6...

output:

401594700 47
401594700 47
401594700 47
2619187684 383
2619187684 383
401594700 47
401594700 47
401594700 47
401594700 47
153338689 31
2619187684 383
401594700 47
401594700 47
401594700 47
401594700 47
401594700 47
79758450 23
165868641 25
165868641 25
165868641 25
401594700 47
401594700 47
165868641...

result:

wrong answer 3rd numbers differ - expected: '3916125', found: '401594700'