QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#333048#7881. Computational Complexitysinsop90WA 100ms10636kbC++141.5kb2024-02-19 16:55:492024-02-19 16:55:49

Judging History

This is the latest submission verdict.

  • [2024-02-19 16:55:49]
  • Judged
  • Verdict: WA
  • Time: 100ms
  • Memory: 10636kb
  • [2024-02-19 16:55:49]
  • Submitted

answer

#include <bits/stdc++.h>
#define int long long
using namespace std;
const int maxn = 1e7 + 5;
map<int, int> mp, bac;
int f[maxn], g[maxn], T, M;
vector<int> vec;
void dfs(int now) {
	if(now > 1000000000000000) return;
	if(mp[now]) return;
	mp[now] = 1;
	if(now > 13) vec.push_back(now);
	dfs(now * 2), dfs(now * 3), dfs(now * 5), dfs(now * 7);
}

void init() {
	for(int i = 1;i <= 13;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]);
	}
	for(int i = 13;i >= 1;i--) f[i] -= f[i - 1], g[i] -= g[i - 1];
	for(int i = 0;i <= 13;i++) vec.push_back(i);
	dfs(1);
	sort(vec.begin(), vec.end());
	for(int i = 0;i < vec.size();i++) bac[vec[i]] = i;
	for(int i = 0;i < vec.size();i++) {
		int X = vec[i];
		if(mp[X * 2] && X * 2 > 13) (f[bac[X * 2]] += g[i]) %= M, (g[bac[X * 2]] += f[i]) %= M;
		if(mp[X * 3] && X * 3 > 13) (f[bac[X * 3]] += g[i]) %= M, (g[bac[X * 3]] += f[i]) %= M;
		if(mp[X * 5] && X * 5 > 13) (f[bac[X * 5]] += g[i]) %= M, (g[bac[X * 5]] += f[i]) %= M;
		if(mp[X * 4] && X * 4 > 13) (g[bac[X * 4]] += f[i]) %= M;
		if(mp[X * 7] && X * 7 > 13) (f[bac[X * 7]] += g[i]) %= M;	
	}
	for(int i = 1;i < vec.size();i++) (f[i] += f[i - 1]) %= M, (g[i] += g[i - 1]) %= M;
}
void solve() {
	int n;
	cin >> n;
	int P = upper_bound(vec.begin(), vec.end(), n) - vec.begin() - 1;
	cout << f[P] % M << " " << g[P] % M << '\n';
}
signed main() {
//	ios::sync_with_stdio(0);
//	cin.tie(0), cout.tie(0);
	cin >> f[0] >> g[0] >> T >> M;
	init();
	while(T --) solve();
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 54ms
memory: 10552kb

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: 58ms
memory: 10484kb

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: 45ms
memory: 10568kb

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: 59ms
memory: 10512kb

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: 54ms
memory: 10556kb

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: 100ms
memory: 10636kb

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'