CSES - Putka Open 2015 – 6/6 - Results
Submission details
Task:Bittilista
Sender:
Submission time:2015-12-06 18:45:28 +0200
Language:C++
Status:READY
Result:100
Feedback
groupverdictscore
#1ACCEPTED17
#2ACCEPTED28
#3ACCEPTED55
Test results
testverdicttimegroup
#1ACCEPTED0.04 s1details
#2ACCEPTED0.05 s1details
#3ACCEPTED0.05 s1details
#4ACCEPTED0.06 s1details
#5ACCEPTED0.06 s1details
#6ACCEPTED0.06 s2details
#7ACCEPTED0.06 s2details
#8ACCEPTED0.06 s2details
#9ACCEPTED0.06 s2details
#10ACCEPTED0.05 s2details
#11ACCEPTED0.05 s3details
#12ACCEPTED0.06 s3details
#13ACCEPTED0.05 s3details
#14ACCEPTED0.05 s3details
#15ACCEPTED0.06 s3details

Code

#include <iostream>
using namespace std;
typedef long long ll;
ll dp[51][2][51][51];
int main() {
    ll n,k;
    cin>>n>>k;
    dp[1][0][0][0] = 1;
    dp[1][1][0][0] = 1;
    for(int i = 2; i <= n; ++i) {
        for(int io = 0; io < n; ++io) {
            for(int oi = 0; oi < n; ++oi) {
                dp[i][1][io+1][oi] += dp[i-1][0][io][oi];
                dp[i][1][io][oi] += dp[i-1][1][io][oi];
                dp[i][0][io][oi+1] += dp[i-1][1][io][oi];
                dp[i][0][io][oi] += dp[i-1][0][io][oi];
            }
        }
    }
    int ed = 2;
    int io = 0;
    int oi = 0;
    for(int i = n; i >= 1; --i) {
        ll sum0 = 0;
        if(ed == 1) ++io;
        for(int j = 0; j < n; ++j) {
            if(j - io >= 0 && j - oi >= 0)
            sum0 += dp[i][0][j-io][j-oi];
        }
        if(ed == 1) --io;
        //cout<<sum0<<'\n';
        if(sum0 >= k) {
            if(ed == 1) ++io;
            ed = 0;
            cout<<0;
        }
        else {
            if(ed == 0) ++oi;
            ed = 1;
            k -= sum0;
            cout<<1;
        }
    }
    cout<<'\n';

}

Test details

Test 1

Group: 1

Verdict: ACCEPTED

input
10 54

correct output
0001101010

user output
0001101010

Test 2

Group: 1

Verdict: ACCEPTED

input
10 302

correct output
1001011011

user output
1001011011

Test 3

Group: 1

Verdict: ACCEPTED

input
10 241

correct output
0111100000

user output
0111100000

Test 4

Group: 1

Verdict: ACCEPTED

input
10 382

correct output
1011111011

user output
1011111011

Test 5

Group: 1

Verdict: ACCEPTED

input
10 138

correct output
0100010010

user output
0100010010

Test 6

Group: 2

Verdict: ACCEPTED

input
20 131002

correct output
00111111111101110010

user output
00111111111101110010

Test 7

Group: 2

Verdict: ACCEPTED

input
20 441567

correct output
11010111100110111101

user output
11010111100110111101

Test 8

Group: 2

Verdict: ACCEPTED

input
20 109770

correct output
00110101100110010010

user output
00110101100110010010

Test 9

Group: 2

Verdict: ACCEPTED

input
20 327308

correct output
10011111110100010111

user output
10011111110100010111

Test 10

Group: 2

Verdict: ACCEPTED

input
20 302918

correct output
10010011111010001011

user output
10010011111010001011

Test 11

Group: 3

Verdict: ACCEPTED

input
50 216967103451763

correct output
011000101010101001001011100100...

user output
011000101010101001001011100100...

Test 12

Group: 3

Verdict: ACCEPTED

input
50 236618662270629

correct output
011010111001101000001001101001...

user output
011010111001101000001001101001...

Test 13

Group: 3

Verdict: ACCEPTED

input
50 426560943304480

correct output
110000011111101000111010110000...

user output
110000011111101000111010110000...

Test 14

Group: 3

Verdict: ACCEPTED

input
50 294553802415801

correct output
100001011111001010010011011000...

user output
100001011111001010010011011000...

Test 15

Group: 3

Verdict: ACCEPTED

input
50 502225394100883

correct output
111001000110001010111011000110...

user output
111001000110001010111011000110...