QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#330840 | #7881. Computational Complexity | Jryno1 | WA | 238ms | 31936kb | C++14 | 2.1kb | 2024-02-17 19:45:21 | 2024-02-17 19:45:22 |
Judging History
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'