Submission details
Task:Lantern Line
Sender:kluopaja3
Submission time:2018-09-13 19:10:21 +0300
Language:C++
Status:READY
Result:ACCEPTED
Test results
testverdicttime
#1ACCEPTED0.03 sdetails
#2ACCEPTED0.04 sdetails
#3ACCEPTED0.07 sdetails
#4ACCEPTED0.10 sdetails
#5ACCEPTED0.20 sdetails
#6ACCEPTED0.27 sdetails
#7ACCEPTED0.38 sdetails
#8ACCEPTED0.33 sdetails
#9ACCEPTED0.25 sdetails
#10ACCEPTED0.24 sdetails
#11ACCEPTED0.37 sdetails
#12ACCEPTED0.39 sdetails
#13ACCEPTED0.37 sdetails
#14ACCEPTED0.37 sdetails
#15ACCEPTED0.38 sdetails

Code

#include <bits/stdc++.h>
using namespace std;
const int MN = 5e6+100;
int t[MN];
int dp[MN];
int f(int a, int b) {
	if(b < 0) return 0;
	if(a == 0) return 0;
	if(a == 1) {
		return min(1, b+1);
	}
	if(__builtin_popcount(a) == 1) {
		return min(b+1, a);
	}
	else {
		int q = 1<<(int)(log2((long double)a));
		int ans = 0;
		if(b <= q-1) {
			ans = f(a-q, b);
			return ans;
		}
		if(dp[a] != -1) {
			ans = dp[a-q];
		}
		else {
			dp[a-q] = f(a-q, q-1);
			ans += dp[a-q];
		}
		ans += f(a-q, b-q);
		return ans;
	}
}
int main() {
	for(int i = 0; i < MN; ++i) dp[i] = -1;
	int n;
	cin>>n;
	t[0] = 1;
	cout<<1<<' ';
	for(int i = 0; i < n-1; ++i) {
			cout<<f(i+2, n-i-2)<<' ';
//		cout<<f(i+2, n-i-2)<<endl;
	}
	cout<<'\n';
}

Test details

Test 1

Verdict: ACCEPTED

input
6

correct output
1 2 2 3 1 1 

user output
1 2 2 3 1 1 

Test 2

Verdict: ACCEPTED

input
1

correct output

user output

Test 3

Verdict: ACCEPTED

input
50000

correct output
1 2 2 4 2 4 4 8 2 4 4 8 4 8 8 ...

user output
1 2 2 4 2 4 4 8 2 4 4 8 4 8 8 ...
Truncated

Test 4

Verdict: ACCEPTED

input
100000

correct output
1 2 2 4 2 4 4 8 2 4 4 8 4 8 8 ...

user output
1 2 2 4 2 4 4 8 2 4 4 8 4 8 8 ...
Truncated

Test 5

Verdict: ACCEPTED

input
200000

correct output
1 2 2 4 2 4 4 8 2 4 4 8 4 8 8 ...

user output
1 2 2 4 2 4 4 8 2 4 4 8 4 8 8 ...
Truncated

Test 6

Verdict: ACCEPTED

input
300000

correct output
1 2 2 4 2 4 4 8 2 4 4 8 4 8 8 ...

user output
1 2 2 4 2 4 4 8 2 4 4 8 4 8 8 ...
Truncated

Test 7

Verdict: ACCEPTED

input
400000

correct output
1 2 2 4 2 4 4 8 2 4 4 8 4 8 8 ...

user output
1 2 2 4 2 4 4 8 2 4 4 8 4 8 8 ...
Truncated

Test 8

Verdict: ACCEPTED

input
345283

correct output
1 2 2 4 2 4 4 8 2 4 4 8 4 8 8 ...

user output
1 2 2 4 2 4 4 8 2 4 4 8 4 8 8 ...
Truncated

Test 9

Verdict: ACCEPTED

input
283161

correct output
1 2 2 4 2 4 4 8 2 4 4 8 4 8 8 ...

user output
1 2 2 4 2 4 4 8 2 4 4 8 4 8 8 ...
Truncated

Test 10

Verdict: ACCEPTED

input
269247

correct output
1 2 2 4 2 4 4 8 2 4 4 8 4 8 8 ...

user output
1 2 2 4 2 4 4 8 2 4 4 8 4 8 8 ...
Truncated

Test 11

Verdict: ACCEPTED

input
392224

correct output
1 2 2 4 2 4 4 8 2 4 4 8 4 8 8 ...

user output
1 2 2 4 2 4 4 8 2 4 4 8 4 8 8 ...
Truncated

Test 12

Verdict: ACCEPTED

input
398314

correct output
1 2 2 4 2 4 4 8 2 4 4 8 4 8 8 ...

user output
1 2 2 4 2 4 4 8 2 4 4 8 4 8 8 ...
Truncated

Test 13

Verdict: ACCEPTED

input
397155

correct output
1 2 2 4 2 4 4 8 2 4 4 8 4 8 8 ...

user output
1 2 2 4 2 4 4 8 2 4 4 8 4 8 8 ...
Truncated

Test 14

Verdict: ACCEPTED

input
393692

correct output
1 2 2 4 2 4 4 8 2 4 4 8 4 8 8 ...

user output
1 2 2 4 2 4 4 8 2 4 4 8 4 8 8 ...
Truncated

Test 15

Verdict: ACCEPTED

input
398499

correct output
1 2 2 4 2 4 4 8 2 4 4 8 4 8 8 ...

user output
1 2 2 4 2 4 4 8 2 4 4 8 4 8 8 ...
Truncated