QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#330840#7881. Computational ComplexityJryno1WA 238ms31936kbC++142.1kb2024-02-17 19:45:212024-02-17 19:45:22

Judging History

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

  • [2024-02-17 19:45:22]
  • 评测
  • 测评结果:WA
  • 用时:238ms
  • 内存:31936kb
  • [2024-02-17 19:45:21]
  • 提交

answer

#include<bits/stdc++.h>
using namespace std;
#define int long long 
const int lim=3e15,lowlim=15;
int f[20],g[20],df[20],dg[20];
int mod,f0,g0,T;
map<int,int>valf,valg,visf,visg;
vector<int>F,G,Fpos,Gpos;
priority_queue<int,vector<int>,greater<int>>havf,havg;
int FtoG[4]={2,3,4,5},GtoF[4]={2,3,5,7};
vector<pair<int,int> >ask;
int ansf[500005],ansg[500005];
signed main(){
	cin.tie(0),cout.tie(0),ios::sync_with_stdio(false);
	cin>>(f[0]=df[0])>>(g[0]=dg[0])>>T>>mod;
	F.push_back(f[0]),Fpos.push_back(0),G.push_back(g[0]),Gpos.push_back(0);
	for(int i=1;i<=lowlim;i++){
		f[i]=max(i,g[i/2]+g[i/3]+g[i/5]+g[i/7]);
		g[i]=max(i,f[i/2]+f[i/3]+f[i/4]+f[i/5]);
		df[i]=f[i]-f[i-1],dg[i]=g[i]-g[i-1];
		valf[i]=df[i],valg[i]=dg[i];
		havf.push(i),havg.push(i);
	}
	while(havf.size()||havg.size()){
		if(havf.size()&&(!havg.size()||havf.top()<=havg.top())){
			int now=havf.top();
//			if(now<21)cout<<"CHK:"<<now<<" "<<valf[now]<<"\n";
//			cout<<"F:"<<now<<"\n";
			havf.pop();
			int dnow=valf[now];
			F.push_back(dnow),Fpos.push_back(now);
			for(int i=0;i<4;i++){
				if(now*FtoG[i]>lowlim&&now*FtoG[i]<lim){
					if(!visg[now*FtoG[i]])visg[now*FtoG[i]]=1,havg.push(now*FtoG[i]);
					valg[now*FtoG[i]]=(valg[now*FtoG[i]]+dnow)%mod;
				}
			}
		} else {
			int now=havg.top();
//			cout<<"G:"<<now<<"\n";
			havg.pop();
			int dnow=valg[now];
			G.push_back(dnow),Gpos.push_back(now);
			for(int i=0;i<4;i++){
				if(now*GtoF[i]>lowlim&&now*GtoF[i]<lim){
					if(!visf[now*GtoF[i]])visf[now*GtoF[i]]=1,havf.push(now*GtoF[i]);
					valf[now*GtoF[i]]=(valf[now*GtoF[i]]+dnow)%mod;
				}
			}
		}
	}	
	for(int i=1;i<=T;i++){
		int n;
		cin>>n;
		ask.push_back(make_pair(n,i));
	}
	sort(ask.begin(),ask.end());
	int nowf=0,nowg=0;
	for(int i=0;i<T;i++){
		if(i)ansf[ask[i].second]=ansf[ask[i-1].second],ansg[ask[i].second]=ansg[ask[i-1].second];
		while(Fpos[nowf]<=ask[i].first)ansf[ask[i].second]=(ansf[ask[i].second]+F[nowf])%mod,nowf++;
		while(Gpos[nowg]<=ask[i].first)ansg[ask[i].second]=(ansg[ask[i].second]+G[nowg])%mod,nowg++;
	}
	for(int i=1;i<=T;i++)cout<<ansf[i]<<" "<<ansg[i]<<"\n";
	return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 204ms
memory: 29128kb

input:

1958 920 10 100000000000
0
1
2
3
10
100
200
1000
19580920
20232023

output:

1958 920
3680 7832
10592 9554
17504 11276
50294 64826
784112 893714
1894550 1905470
12057866 12979424
71481494756 48626708512
28127864908 7251681354

result:

ok 20 numbers

Test #2:

score: 0
Accepted
time: 211ms
memory: 29108kb

input:

0 0 10 100000000000
0
1
2
3
4
10
20
30
40
100

output:

0 0
1 1
2 2
3 3
4 4
11 12
25 26
41 41
55 58
162 172

result:

ok 20 numbers

Test #3:

score: 0
Accepted
time: 211ms
memory: 29096kb

input:

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

output:

0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0

result:

ok 20 numbers

Test #4:

score: 0
Accepted
time: 219ms
memory: 29132kb

input:

36092 30559 2149 729566623185
909730017626
961811467628
978809456383
494310140318
760462959632
726343527430
220697276132
366336227300
456813204361
569783542145
13854148170
51526515764
564416233246
876430686824
862897449267
956440673661
512777546436
728860125927
799238602356
978766770799
47962348351
...

output:

192287632545 510282654057
513694515018 658644741565
90751152870 6088748556
138070013247 301112114677
224113421002 105290451187
630454127249 196841848259
546918129568 526274849982
226761501362 157889210040
135623074930 620463814922
78467045157 602244472172
51639549042 411354142414
329188915935 306494...

result:

ok 4298 numbers

Test #5:

score: 0
Accepted
time: 222ms
memory: 29392kb

input:

46012 72474 6895 931299293479
635558333906
151352929427
186830308154
201652909474
130684521091
862625793178
335372663856
565394770762
609752364488
636658378167
568072145317
23602174799
74849827839
567735061723
964475612065
721588322843
526921882143
141483206690
794896616456
923141155683
443983986019...

output:

737640936783 269480550026
785950579990 586907405473
274405996613 356240054012
164145774405 803378519477
613956922400 426121843045
509646717167 788278629379
95131481441 672600899832
720839818877 52329269906
131977527669 257593035330
737640936783 269480550026
202443098753 171133839273
188615102144 605...

result:

ok 13790 numbers

Test #6:

score: -100
Wrong Answer
time: 238ms
memory: 31936kb

input:

4625 65696 87448 104757899185
324541097749
340894391228
353710640194
913290645927
500906082550
994613091630
486893604015
755863379632
795242109754
670982629049
89739557323
995677833835
622128974870
291590021762
74643709454
491030939322
504220665415
590951839890
749414110824
908656060298
831415689095...

output:

24017028596 61020984279
-14721881104 8518714361
4807132724 94915889679
60642395760 99169995073
45912197521 30663794937
26807208137 73005099296
31855861883 38442189712
61377861921 69296474844
15633158436 24561226404
83188091024 -3479688660
92283972576 51782451279
22904017080 27746280119
46615471334 7...

result:

wrong answer 3rd numbers differ - expected: '90036018081', found: '-14721881104'