QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#73730#5100. 卡牌游戏guobo35 1386ms108720kbC++143.0kb2023-01-27 20:34:522023-01-27 20:34:54

Judging History

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

  • [2023-08-10 23:21:45]
  • System Update: QOJ starts to keep a history of the judgings of all the submissions.
  • [2023-01-27 20:34:54]
  • 评测
  • 测评结果:35
  • 用时:1386ms
  • 内存:108720kb
  • [2023-01-27 20:34:52]
  • 提交

answer

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<ll,int> PII;
const int maxn=555555,maxsq=750,mod=998244353;
#define fi first
#define se second
#define MP make_pair
#define PB push_back
#define lson o<<1,l,mid
#define rson o<<1|1,mid+1,r
#define FOR(i,a,b) for(int i=(a);i<=(b);i++)
#define ROF(i,a,b) for(int i=(a);i>=(b);i--)
#define MEM(x,v) memset(x,v,sizeof(x))
inline ll read(){
	char ch=getchar();ll x=0,f=0;
	while(ch<'0' || ch>'9') f|=ch=='-',ch=getchar();
	while(ch>='0' && ch<='9') x=x*10+ch-'0',ch=getchar();
	return f?-x:x;
}
inline int qpow(int a,int b){
	int ans=1;
	for(;b;b>>=1,a=1ll*a*a%mod) if(b&1) ans=1ll*ans*a%mod;
	return ans;
}
int n,s,sq,tp,a[maxn],g[maxsq][maxsq],lt[maxn];
PII p[maxn][2];
ll f[maxn],ff[maxn],mx[maxn],st[20][maxn];
inline int gcd(int x,int y){
	if(x<=sq && y<=sq) return g[x][y];
	return y?gcd(y,x%y):x;
}
inline int w(int x,int y){
	ll l=1ll*x/gcd(x,y)*y;
	return s/l*l;
}
inline void update(int l,int r,ll v){
	if(l>r) return;
	int k=lt[r-l+1];
//	printf("update %d %d %lld,k=%d\n",l,r,v,k);
	st[k][l]=max(st[k][l],v);
	st[k][r-(1<<k)+1]=max(st[k][r-(1<<k)+1],v);
}
void solve(){
	n=read();s=read();tp=read();read();
	sq=sqrt(s);
	FOR(i,1,n) a[i]=read();
	FOR(i,0,sq) FOR(j,0,i){
		if(!i || !j) g[i][j]=i+j;
		else g[i][j]=g[j][i%j];
	}
	FOR(i,0,sq) FOR(j,i,sq) g[i][j]=g[j][i];
	ll ans=0;
	FOR(_,0,1){
		MEM(mx,~0x3f);
		FOR(i,1,n) if(a[i]<=s){
			if(a[i]<=sq){
				int cnt=0;
				ROF(j,i-1,1){
					if(a[j]<=sq) if(++cnt==2) break;
					f[i]=max(f[i],f[j]+w(a[i],a[j]));
				}
				cnt=0;
				FOR(j,i+1,n){
					if(a[j]<=sq) if(++cnt==2) break;
					f[j]=max(f[j],f[i]+w(a[i],a[j]));
				}
			}
			else{
				for(int j=0;j<=s;j+=a[i]) f[i]=max(f[i],mx[j]+j);
				for(int j=0;j<=s;j+=a[i]) mx[j]=max(mx[j],f[i]);
			}
			ans=max(ans,f[i]);
		}
		else f[i]=f[i-1];
		reverse(a+1,a+n+1);
		swap(f,ff);
	}
	printf("%lld ",ans);
	if(tp==0) return;
	reverse(ff+1,ff+n+1);
//	FOR(i,1,n) printf("f[%d]=%lld,ff[%d]=%lld\n",i,f[i],i,ff[i]);
	FOR(i,2,n) lt[i]=lt[i>>1]+1;
	FOR(i,1,n) if(a[i]<=sq){
		int cnt=0;
		ROF(j,i-1,1){
			if(a[j]<=sq) if(++cnt==3) break;
			update(j+1,i-1,f[j]+ff[i]+w(a[i],a[j]));
		}
		cnt=0;
		FOR(j,i+1,n){
			if(a[j]<=sq) if(++cnt==3) break;
			update(i+1,j-1,f[i]+ff[j]+w(a[i],a[j]));
		}
	}
//	puts("end");
	MEM(p,~0x3f);
	FOR(i,1,n) if(a[i]<=s && a[i]>sq){
		for(int j=0;j<=s;j+=a[i]){
			int k=p[j][0].se;
			if(k>=1) update(k+1,i-1,f[k]+ff[i]+j);
			k=p[j][1].se;
			if(k>=1) update(k+1,i-1,f[k]+ff[i]+j);
		}
		for(int j=0;j<=s;j+=a[i]){
			if(f[i]>=p[j][0].fi) p[j][1]=p[j][0],p[j][0]=MP(f[i],i);
		}
	}
	ROF(i,lt[n],1) FOR(j,1,n-(1<<i)+1){
		st[i-1][j]=max(st[i-1][j],st[i][j]);
		st[i-1][j+(1<<(i-1))]=max(st[i-1][j+(1<<(i-1))],st[i][j]);
	}
	ans=0;
	FOR(i,1,n) ans^=1ll*i*max(st[0][i],f[i-1]+ff[i+1]);//,printf("ans[%d]=%lld\n",i,max(st[0][i],f[i-1]+ff[i+1]));
	printf("%lld\n",ans);
	FOR(i,1,n) printf("%lld ",max(st[0][i],f[i-1]+ff[i+1]));
}
int main(){
	int T=1;
	while(T--) solve();
}

詳細信息

Subtask #1:

score: 0
Wrong Answer

Test #1:

score: 0
Wrong Answer
time: 12ms
memory: 38096kb

input:

1000 100000 1 1
69 99 297 63 277 271 109 268 209 181 100 195 282 137 211 270 87 10 247 294 138 108 33 258 152 265 304 154 201 66 269 189 5 162 134 276 144 187 107 170 16 135 253 67 156 138 299 165 70 258 158 239 186 168 277 261 86 173 153 14 35 226 158 258 129 152 295 235 271 31 192 92 153 236 142 1...

output:

91045064 83613761529
90947153 90942995 90945272 90940286 90968107 90971959 90941439 90992540 91010410 90962506 90927654 90954614 90956291 90940577 90975353 90985919 90951824 90933040 90973606 90945950 90946292 90944582 90943466 90942998 90934834 90983656 90952492 90919674 90954710 90913079 91005245 ...

result:

wrong answer Output contains longer sequence [length = 1002], but answer contains 2 elements

Subtask #2:

score: 0
Wrong Answer

Test #8:

score: 0
Wrong Answer
time: 9ms
memory: 37896kb

input:

10000 100000 1 2
91 50 303 100 42 100 36 306 191 90 99 45 196 144 64 35 98 147 180 115 16 209 62 315 270 295 26 60 139 135 98 39 148 7 239 133 268 218 179 225 253 289 289 279 31 244 288 68 128 275 147 2 222 146 303 215 51 212 84 4 64 183 153 58 230 13 34 58 45 237 301 303 241 92 140 306 60 83 273 23...

output:

913775751 7945799038884
913680201 913672020 913693951 913683717 913678351 913676943 913667895 913713813 913730805 913684356 913675761 913675761 913679307 913674535 913673303 913674447 913675791 913675791 913663896 913676391 913675555 913687765 913653230 913671891 913674816 913678741 913675321 913681...

result:

wrong answer Output contains longer sequence [length = 10002], but answer contains 2 elements

Subtask #3:

score: 0
Wrong Answer

Test #15:

score: 0
Wrong Answer
time: 95ms
memory: 50312kb

input:

100000 300000 1 3
274679 257449 79355 22007 205440 219549 7516 102115 226913 157081 9451 228050 8862 198356 270934 221218 162391 221194 235433 234134 70219 45552 211652 248648 164511 74601 168682 139466 189586 258255 264158 218369 21734 195969 71728 299881 104633 21390 36649 25670 121247 41503 20806...

output:

226109485 23395571928369
226109485 226109485 226109485 226109485 226109485 226109485 226109485 226109485 226109485 226109485 226109485 226109485 226109485 226109485 226109485 226109485 226109485 226109485 226109485 226109485 226109485 226109485 226109485 226109485 226109485 226109485 226109485 22610...

result:

wrong answer Output contains longer sequence [length = 100002], but answer contains 2 elements

Subtask #4:

score: 0
Wrong Answer

Test #16:

score: 0
Wrong Answer
time: 30ms
memory: 50004kb

input:

100000 300000 1 4
22 98 92 49 86 56 11 69 100 65 99 79 39 97 40 88 47 28 79 43 75 13 43 41 69 56 62 47 21 28 69 95 1 92 92 60 78 15 3 20 96 15 95 82 38 9 80 26 64 21 19 48 17 27 79 7 25 66 100 70 94 16 21 61 13 57 42 60 66 18 99 97 69 63 89 20 73 22 64 41 19 9 9 45 64 97 4 71 41 93 65 49 81 23 4 52 ...

output:

29908227273 3183540118634089
29907927589 29907929613 29907932195 29907927251 29907929367 29907928571 29907925004 29907929968 29907927583 29907929263 29907931895 29907931089 29907928416 29907929176 29907927633 29907928761 29907930741 29907926961 29907929513 29907924662 29907927647 29907928249 2990792...

result:

wrong answer Output contains longer sequence [length = 100002], but answer contains 2 elements

Subtask #5:

score: 10
Accepted

Test #19:

score: 10
Accepted
time: 14ms
memory: 19508kb

input:

100000 100000 0 5
160 79 241 305 285 252 135 178 99 105 215 136 248 256 255 309 149 226 295 99 253 269 40 126 95 232 201 201 275 306 119 314 91 222 89 135 62 240 100 178 274 99 107 278 238 193 222 311 218 242 46 74 180 253 141 100 33 54 267 90 274 199 64 279 132 183 135 266 258 208 169 89 194 114 11...

output:

9112169164 

result:

ok 1 number(s): "9112169164"

Test #20:

score: 0
Accepted
time: 134ms
memory: 19280kb

input:

100000 100000 0 5
321 321 321 318 320 318 317 321 319 320 317 318 321 317 317 318 319 321 321 319 319 317 319 321 318 319 318 317 321 320 317 321 318 317 319 319 318 319 321 321 319 317 321 319 317 321 318 318 317 317 320 317 319 319 317 321 317 319 317 320 321 317 319 318 317 321 320 317 319 319 32...

output:

4644520350 

result:

ok 1 number(s): "4644520350"

Test #21:

score: 0
Accepted
time: 0ms
memory: 19516kb

input:

100000 100000 0 5
99741 99785 99945 99814 99716 99908 99993 99894 99992 99727 99769 99900 99825 99721 99912 99721 99888 99996 99842 99772 99841 99748 99895 99698 99839 99706 99883 99905 99751 99761 99711 99779 99864 99935 99927 99930 99715 99687 99987 99861 99830 99791 99929 99904 99687 99755 99802 ...

output:

461415122 

result:

ok 1 number(s): "461415122"

Test #22:

score: 0
Accepted
time: 71ms
memory: 20872kb

input:

100000 100000 0 5
99994 321 174 99919 154 22327 319 99768 99776 251 167 26 136 204 238 94 318 99949 13887 320 317 99776 319 239 24 162 183 99805 321 270 93 321 63 32 117 320 317 99820 63 99877 193 99825 320 321 99753 99858 99911 318 319 99884 319 99800 93 99737 99740 60184 99885 99950 317 99939 320 ...

output:

4590723790 

result:

ok 1 number(s): "4590723790"

Test #23:

score: 0
Accepted
time: 15ms
memory: 19124kb

input:

100000 100000 0 5
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 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:

9999900000 

result:

ok 1 number(s): "9999900000"

Test #24:

score: 0
Accepted
time: 45ms
memory: 19512kb

input:

100000 100000 0 5
87564 98687 95082 86046 59414 92993 1441 87994 42233 49845 91114 32159 31160 50038 67919 29885 82383 87674 3363 86912 54853 14045 25007 87793 44557 70863 70455 8631 19993 83876 70320 64268 29173 6914 73921 56750 67652 13938 49602 6379 43284 13161 12319 72250 50131 47821 87829 49558...

output:

128441922 

result:

ok 1 number(s): "128441922"

Test #25:

score: 0
Accepted
time: 10ms
memory: 20636kb

input:

100000 100000 0 5
100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 10...

output:

9999900000 

result:

ok 1 number(s): "9999900000"

Subtask #6:

score: 0
Wrong Answer

Test #26:

score: 0
Wrong Answer
time: 36ms
memory: 49496kb

input:

100000 100000 1 6
99 254 235 123 310 237 248 278 100 34 213 275 66 242 297 120 272 185 140 149 276 165 163 162 119 142 79 6 66 163 134 296 176 12 45 96 152 200 59 127 279 249 67 111 208 49 161 121 153 72 280 164 310 266 228 23 101 197 88 245 32 23 51 140 206 112 207 164 207 40 262 245 224 258 167 15...

output:

9115701137 222488541689194
9115625699 9115659069 9115648458 9115625582 9115648577 9115668091 9115639303 9115634093 9115604483 9115593591 9115641916 9115641968 9115599475 9115603457 9115595207 9115588961 9115650577 9115647597 9115601972 9115632049 9115626149 9115619348 9115639244 9115622514 911561227...

result:

wrong answer Output contains longer sequence [length = 100002], but answer contains 2 elements

Subtask #7:

score: 10
Accepted

Test #33:

score: 10
Accepted
time: 41ms
memory: 20200kb

input:

300000 300000 0 7
101 52 102 151 14 514 86 100 239 399 486 520 239 489 176 112 517 478 215 539 134 46 200 54 307 48 78 220 205 433 509 312 381 13 457 515 481 223 326 300 193 103 289 203 393 25 506 137 7 239 201 343 165 107 135 487 16 162 177 369 415 246 59 169 127 522 207 465 418 287 311 248 298 311...

output:

82066272311 

result:

ok 1 number(s): "82066272311"

Test #34:

score: 0
Accepted
time: 651ms
memory: 20340kb

input:

300000 300000 0 7
548 549 551 548 548 551 552 548 548 549 552 549 548 551 549 549 552 550 551 548 549 549 550 551 551 550 550 550 548 550 548 549 549 550 549 548 549 548 552 548 548 549 550 552 552 548 549 551 550 551 549 551 552 552 550 550 552 552 552 551 548 552 549 548 551 548 551 549 550 552 55...

output:

47202787514 

result:

ok 1 number(s): "47202787514"

Test #35:

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

input:

300000 300000 0 7
299530 299495 299739 299518 299807 299905 299934 299986 299534 299485 299609 299687 299648 299548 299730 299512 299495 299793 299748 299841 299978 299927 299766 299761 299987 299956 299664 299825 299911 299707 299843 299937 299755 299773 299493 299624 299755 299529 299758 299955 29...

output:

3100324815 

result:

ok 1 number(s): "3100324815"

Test #36:

score: 0
Accepted
time: 302ms
memory: 19916kb

input:

300000 300000 0 7
28021 299647 548 129 182 551 547 548 550 548 270461 548 205 488 288422 549 60 552 299571 299932 299833 299954 552 299586 552 551 391 299854 162 551 536 548 548 148224 299919 548 106 44 299457 551 87084 299538 235 297634 299456 148998 142 530 230 551 551 394 548 550 36 549 293 29985...

output:

42391062037 

result:

ok 1 number(s): "42391062037"

Test #37:

score: 0
Accepted
time: 30ms
memory: 20064kb

input:

300000 300000 0 7
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 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:

89999700000 

result:

ok 1 number(s): "89999700000"

Test #38:

score: 0
Accepted
time: 120ms
memory: 19804kb

input:

300000 300000 0 7
49016 283378 24015 196970 139037 102956 274684 138710 124923 210684 271874 271496 102773 233268 67436 2679 79610 112733 65364 127903 252055 96203 90553 106788 148812 249122 99415 127681 288582 107599 78243 194704 156102 133180 65183 173765 210005 80178 267168 244002 97690 6195 2220...

output:

705473848 

result:

ok 1 number(s): "705473848"

Test #39:

score: 0
Accepted
time: 25ms
memory: 20052kb

input:

300000 300000 0 7
300000 300000 300000 300000 300000 300000 300000 300000 300000 300000 300000 300000 300000 300000 300000 300000 300000 300000 300000 300000 300000 300000 300000 300000 300000 300000 300000 300000 300000 300000 300000 300000 300000 300000 300000 300000 300000 300000 300000 300000 30...

output:

89999700000 

result:

ok 1 number(s): "89999700000"

Subtask #8:

score: 0
Wrong Answer

Test #40:

score: 0
Wrong Answer
time: 107ms
memory: 77868kb

input:

300000 300000 1 8
404 482 307 14 397 186 112 173 197 389 278 419 417 196 138 264 161 330 395 465 84 516 235 507 515 247 222 268 105 119 435 328 514 337 356 246 204 370 364 174 512 538 129 135 203 348 247 58 430 238 165 397 203 145 175 435 158 297 443 446 467 3 493 294 394 375 157 405 385 449 116 361...

output:

82044763846 90530803002082
82044471754 82044423862 82044468248 82044416468 82044473364 82044443614 82044471160 82044487390 82044530487 82044591493 82044477589 82044655565 82044590299 82044508852 82044466318 82044468250 82044500308 82044465806 82044479866 82044469126 82044404530 82044517630 820445446...

result:

wrong answer Output contains longer sequence [length = 300002], but answer contains 2 elements

Subtask #9:

score: 15
Accepted

Test #47:

score: 15
Accepted
time: 84ms
memory: 20688kb

input:

500000 500000 0 9
464 653 212 650 549 203 500 292 366 468 464 660 240 393 279 587 405 403 148 638 438 251 441 92 302 270 56 271 559 639 474 193 644 310 48 548 559 289 163 439 372 425 121 459 620 636 282 610 133 283 215 317 451 166 431 21 139 229 261 260 9 112 71 468 287 312 680 330 95 140 92 44 238 ...

output:

227886764436 

result:

ok 1 number(s): "227886764436"

Test #48:

score: 0
Accepted
time: 1386ms
memory: 20584kb

input:

500000 500000 0 9
708 709 709 709 711 711 708 712 708 712 711 710 711 712 708 710 708 711 708 710 710 708 711 712 710 708 709 711 710 710 711 709 708 709 712 710 710 711 710 708 712 709 709 711 711 708 710 711 709 708 711 708 708 708 710 709 708 708 710 712 712 708 709 712 709 709 711 708 712 710 71...

output:

131022284688 

result:

ok 1 number(s): "131022284688"

Test #49:

score: 0
Accepted
time: 20ms
memory: 20704kb

input:

500000 500000 0 9
499461 499989 499588 499771 499583 499588 499416 499874 499345 499373 499956 499737 499996 499492 499806 499879 499558 499463 499974 499970 499586 499736 499527 499607 499569 499403 499368 499460 499523 499722 499637 499319 499928 499794 499501 499329 499314 499585 499840 499739 49...

output:

7549726882 

result:

ok 1 number(s): "7549726882"

Test #50:

score: 0
Accepted
time: 603ms
memory: 20844kb

input:

500000 500000 0 9
712 202 139 708 76 710 499465 499848 367902 474 708 500000 218 473708 620 712 255 499782 708 710 492 710 712 499654 499374 499318 430 499325 711 708 710 687 627 499504 499968 499879 499684 222 226 343895 499917 88 499555 132 710 499443 710 269 15847 499927 272 712 711 617 495 710 4...

output:

117720124105 

result:

ok 1 number(s): "117720124105"

Test #51:

score: 0
Accepted
time: 60ms
memory: 20672kb

input:

500000 500000 0 9
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 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:

249999500000 

result:

ok 1 number(s): "249999500000"

Test #52:

score: 0
Accepted
time: 216ms
memory: 20684kb

input:

500000 500000 0 9
112488 386312 349251 434653 211351 475440 126897 443781 131445 384146 244795 429244 458108 165837 3792 251955 295769 135173 297519 112848 46032 407556 403454 420371 433741 184741 269561 155879 328973 370459 199582 404722 42642 239834 411425 238901 39442 177539 480059 396995 325553 ...

output:

1548559325 

result:

ok 1 number(s): "1548559325"

Test #53:

score: 0
Accepted
time: 19ms
memory: 20636kb

input:

500000 500000 0 9
500000 500000 500000 500000 500000 500000 500000 500000 500000 500000 500000 500000 500000 500000 500000 500000 500000 500000 500000 500000 500000 500000 500000 500000 500000 500000 500000 500000 500000 500000 500000 500000 500000 500000 500000 500000 500000 500000 500000 500000 50...

output:

249999500000 

result:

ok 1 number(s): "249999500000"

Subtask #10:

score: 0
Wrong Answer

Test #54:

score: 0
Wrong Answer
time: 204ms
memory: 108720kb

input:

500000 500000 1 10
508 318 336 300 675 515 168 520 687 644 236 670 590 176 478 99 119 556 430 385 117 89 483 321 194 194 314 236 438 142 18 499 161 495 649 255 190 667 396 600 165 376 547 145 390 43 485 645 32 685 54 276 322 353 659 516 102 440 476 351 282 94 222 594 98 399 22 434 50 76 84 504 2 173...

output:

227911469762 141022772149339708
227910985130 227910955898 227910968438 227910928262 227910977987 227911041887 227911027802 227911082786 227911088694 227911019782 227910932934 227911020182 227910999802 227910962808 227911032798 227910956796 227911007208 227910988984 227910923072 227910930407 22791095...

result:

wrong answer Output contains longer sequence [length = 500002], but answer contains 2 elements