QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#30614#975. Gamewh_ZH#AC ✓169ms13536kbC++966b2022-04-30 14:13:162022-04-30 14:13:16

Judging History

This is the latest submission verdict.

  • [2023-08-10 23:21:45]
  • System Update: QOJ starts to keep a history of the judgings of all the submissions.
  • [2022-04-30 14:13:16]
  • Judged
  • Verdict: AC
  • Time: 169ms
  • Memory: 13536kb
  • [2022-04-30 14:13:16]
  • Submitted

answer

#include <bits/stdc++.h>
using namespace std;
const int N=500005,Mod=998244353;
#define ll long long
struct Node{
	int x;
	ll y;
}a[N];
int s[N],top;
ll cross(Node a,Node b,Node c){
	ll x=b.x-a.x,xx=c.x-a.x;
	ll y=b.y-a.y,yy=c.y-a.y;
	return y*xx-x*yy;
}
inline int qpow(int a,int b){
	int ans=1;
	while (b){
		if (b&1) ans=1ll*ans*a%Mod;
		a=1ll*a*a%Mod,b>>=1;
	}
	return ans;
}
int main() {
	int n;scanf ("%d",&n);
	for (int i=1;i<=n;i++){
		a[i].x=i;
		scanf ("%lld",&a[i].y);
	}
	s[top=1]=1;
	for (int i=2;i<=n;i++){
		while (top>1&&cross(a[s[top-1]],a[s[top]],a[i])<0) top--;
		s[++top]=i;
	}
	int ans=0,lst=1;
	for (int i=1;i<=n;i++){
		while (lst<=top&&a[s[lst]].x<i) lst++;
		if (a[s[lst]].x==i) ans=(ans+a[i].y)%Mod;
		else ans=(ans+1ll*(1ll*(a[s[lst]].x-i)*a[s[lst-1]].y+1ll*(i-a[s[lst-1]].x)*a[s[lst]].y)%Mod*qpow(a[s[lst]].x-a[s[lst-1]].x,Mod-2))%Mod;
	}
	printf ("%d",1ll*ans*qpow(n,Mod-2)%Mod);
	return 0;
}


詳細信息

Test #1:

score: 100
Accepted
time: 2ms
memory: 5812kb

input:

3
3 1 2

output:

499122179

result:

ok "499122179"

Test #2:

score: 0
Accepted
time: 2ms
memory: 5824kb

input:

6
6 1 2 5 3 4

output:

582309211

result:

ok "582309211"

Test #3:

score: 0
Accepted
time: 169ms
memory: 13396kb

input:

500000
131592496991 614154464278 882215024371 954828734583 997777248498 677111110098 927405745589 218490006270 743425189504 391435077446 972647376673 630405853326 714899101544 90679613430 530369364312 763893201576 838136940841 261795310871 187042095193 941416320169 688136558810 554872601435 54089147...

output:

131032905

result:

ok "131032905"

Test #4:

score: 0
Accepted
time: 142ms
memory: 11844kb

input:

500000
421220858944 713224031063 336994376776 404652618849 994886478979 829414359743 316305757515 853349571538 209760384582 147707414760 185696717554 799127062493 617492545107 53250360125 328023561767 733955134735 597561653732 916598190157 579663876723 955327502435 743204270667 366987453720 11387374...

output:

348480416

result:

ok "348480416"

Test #5:

score: 0
Accepted
time: 109ms
memory: 13536kb

input:

500000
771963972281 951878663502 161804581898 999999999990 999999999996 999999999989 999999999979 999999999965 999999999943 641359945099 612980551716 999999999876 999999999841 999999999795 999999999735 999999999668 925643315831 999999999534 999999999449 323521484303 343970139588 999999999191 4816618...

output:

555358133

result:

ok "555358133"

Test #6:

score: 0
Accepted
time: 137ms
memory: 13200kb

input:

500000
731038336473 702417643458 99746958924 750705686043 757261469217 756274960637 253908059872 776928818738 296137376885 108525188952 796596168245 803151951402 809707734549 816263517688 822819300826 829375083951 458946003379 713702318217 849042433322 855598216431 862153999525 868709782603 87526556...

output:

375919639

result:

ok "375919639"

Test #7:

score: 0
Accepted
time: 5ms
memory: 5824kb

input:

5000
347931136892 248405930290 545145973932 959711822405 663469739788 271778456420 606252233695 118860304765 575983148404 978665447746 407137591528 87773793124 418700437665 712485983701 221166405070 310847318179 426658720698 812176551095 975518517744 815933288917 682784954397 554770160022 6457887899...

output:

761790956

result:

ok "761790956"

Test #8:

score: 0
Accepted
time: 5ms
memory: 5836kb

input:

5000
548236179275 100704704660 999546081878 999999959902 999999972450 999999914844 999999762365 999999536382 999999228545 999998838310 500922364815 999997959059 999997469194 999996909593 999996348133 999995748919 999995120089 999994485016 359478933956 745710318835 999992536867 999991799874 999991025...

output:

933989751

result:

ok "933989751"

Test #9:

score: 0
Accepted
time: 4ms
memory: 5836kb

input:

5000
423792415313 584164203827 744535958314 904907634367 999999935403 999999901586 999999808334 614614432429 999999600031 999999419574 999999189705 999998934894 999998669832 999998317316 999997938174 999997558147 999997109631 676337496849 999996138497 999995596881 999994995701 999994328103 999993595...

output:

463005503

result:

ok "463005503"

Test #10:

score: 0
Accepted
time: 4ms
memory: 5840kb

input:

5000
194846717164 283755585977 372664371248 461573056586 550481685947 639390308241 728298878142 817207379441 906115813385 995024187855 999999978507 999999969455 999999929108 999999863839 999999761219 999999558974 999999321236 999999044519 999998761833 999998401451 952979572445 999997676207 999997290...

output:

279043762

result:

ok "279043762"

Test #11:

score: 0
Accepted
time: 4ms
memory: 5824kb

input:

5000
91073571943 29005326232 302727879690 408554936320 514381922178 620208815826 726035664215 756479610641 937689356888 999999929358 999999922046 999999912402 999999867083 999999754083 598925718703 637973050717 999999403911 999999270686 999999065292 999998802703 999998471786 999998139358 99999777247...

output:

408133290

result:

ok "408133290"

Test #12:

score: 0
Accepted
time: 4ms
memory: 5828kb

input:

5000
182682143490 2141200490 491474481633 645870617005 614391945875 954662877791 999999906824 999999986402 559562261622 999999929779 999999837149 999999646265 268454415317 999999171756 999998932364 199960439797 999998396909 823161202351 999997819513 999997527560 999997171707 999996774679 99999635828...

output:

772519397

result:

ok "772519397"

Test #13:

score: 0
Accepted
time: 2ms
memory: 5824kb

input:

5000
304953313333 975183464755 999999958493 999999945958 999999881001 999999736301 999999530494 999999307991 999999043312 999998689969 999998335878 999997901831 999997374056 999996845656 999996308684 999995746014 999995094383 999994379229 999993613721 999992821801 999991974425 999991110674 999990235...

output:

958370949

result:

ok "958370949"

Test #14:

score: 0
Accepted
time: 5ms
memory: 5748kb

input:

5000
50131007849 513993519329 977855960409 999999975589 622431075835 999999990868 999999906828 999999744279 999999518233 187974338728 180142660520 999998771957 713085937291 999998273915 999997939102 999997566488 999997134505 999996637890 999996129423 999995546872 999994913628 901973523223 9999935935...

output:

220313865

result:

ok "220313865"

Test #15:

score: 0
Accepted
time: 2ms
memory: 5784kb

input:

5000
38913877553 72568444743 12600004417 272523691307 345169412783 159626587707 488665865251 584003425571 661873323451 739743122924 773411128961 579455320551 973352516913 999999947063 898832460426 999999964367 703399657201 999999956182 999999943332 999999895232 374192348094 999999746669 999999613113...

output:

912109210

result:

ok "912109210"

Test #16:

score: 0
Accepted
time: 5ms
memory: 5704kb

input:

5000
500661178996 830606330068 999999921730 76046992909 249966831793 282428933075 999999991226 93093616510 999999930539 21269407067 999999800994 999999669698 612121846360 999999406753 999999223563 490349993172 999998812585 999998577614 258179270664 650221614792 162500641022 971620612638 999997337229...

output:

225949849

result:

ok "225949849"

Test #17:

score: 0
Accepted
time: 1ms
memory: 5828kb

input:

5000
96636495565 876047161291 999999956147 999999900455 999999794556 999999612795 999999384863 999999155919 291140890508 999998606064 999998251199 999997849934 999997448584 999996976405 999996407086 999995775759 142179410415 999994497723 999993849860 999993125973 999992393850 999991648438 9999908168...

output:

198832401

result:

ok "198832401"

Test #18:

score: 0
Accepted
time: 5ms
memory: 5892kb

input:

5000
227759449377 215126601299 968436381497 659508059861 296154593126 532545255458 676283137624 793774420266 477847283648 819956929821 792474270670 520802101780 174728981654 983056401038 727300242200 486259514436 708418941287 517233349277 747191912062 900200265029 418004680115 984177617522 112319658...

output:

278159165

result:

ok "278159165"

Test #19:

score: 0
Accepted
time: 5ms
memory: 5832kb

input:

5000
105603061676 117969061792 291081695382 180373745978 21723680175 806080988657 139199046179 304207863135 243476309424 724313468929 426847434706 838703319594 577930725134 99458488055 140552822792 696044364803 914646688775 478029166434 707277758362 260042678686 216408897138 559581185451 86596293323...

output:

72656673

result:

ok "72656673"

Test #20:

score: 0
Accepted
time: 6ms
memory: 5840kb

input:

5000
555736355784 266680249447 703569450267 586944676139 125766689234 308190809501 316378705410 975350664246 48828558465 343812157125 877790944037 487432664541 130461582719 437502178175 385861000495 754964049757 745747792150 452231142690 660089861802 907788042612 243925387993 622329576773 4381244449...

output:

569702228

result:

ok "569702228"

Test #21:

score: 0
Accepted
time: 5ms
memory: 5824kb

input:

5000
471977958492 448476416347 929137668174 310019132092 687651931583 180163366400 318195889933 303594684297 816852542654 272730782167 121319886866 400179641200 164272615947 655398642577 417821403362 492682653186 608588573163 877609414908 756322866617 345606899484 650025925848 540441691899 895491350...

output:

704759823

result:

ok "704759823"