CSES - Datatähti 2018 alku - Results
Submission details
Task:Bittijono
Sender:Olli
Submission time:2017-10-08 10:32:30 +0300
Language:C++
Status:READY
Result:42
Feedback
groupverdictscore
#10
#2ACCEPTED15
#3ACCEPTED27
#40
Test results
testverdicttimegroup
#10.06 s1details
#20.04 s1details
#30.06 s1details
#40.07 s1details
#50.04 s1details
#60.04 s1details
#70.06 s1details
#80.04 s1details
#90.07 s1details
#100.07 s1details
#11ACCEPTED0.04 s2details
#12ACCEPTED0.05 s2details
#13ACCEPTED0.05 s2details
#14ACCEPTED0.04 s2details
#15ACCEPTED0.05 s2details
#16ACCEPTED0.04 s2details
#17ACCEPTED0.04 s2details
#18ACCEPTED0.05 s2details
#19ACCEPTED0.06 s2details
#20ACCEPTED0.07 s2details
#21ACCEPTED0.07 s3details
#22ACCEPTED0.06 s3details
#23ACCEPTED0.08 s3details
#24ACCEPTED0.06 s3details
#25ACCEPTED0.06 s3details
#26ACCEPTED0.06 s3details
#27ACCEPTED0.07 s3details
#28ACCEPTED0.07 s3details
#29ACCEPTED0.07 s3details
#30ACCEPTED0.08 s3details
#31--4details
#32--4details
#33--4details
#34--4details
#35--4details
#36--4details
#37--4details
#38--4details
#39--4details
#40--4details

Code

#include <iostream>

using namespace std;

//this seems to be too slow for 100 points, even though it seems to be O(n log n), assuming that the answer to the problem is O(n). This assumption seems to be wrong. QAQ.
int stringInBinary[30];
int length;
int subsSoFar[30];
int subsEndHere[30];
int uniqueSubsEndHere[30];

void increase() {
    stringInBinary[1]++;
    int i = 1;
    while(stringInBinary[i] == 2) {
        stringInBinary[i] = 0;
        stringInBinary[i+1]++;
        i++;
    }
    if(stringInBinary[length+1]) {
        length++;
    }
}

int amountOfSubstrings() {
    for(int i = 1; i <= 29; i++) {
        subsSoFar[i] = 0;
        uniqueSubsEndHere[i] = 0;
        subsEndHere[i] = 0;
    }
    subsSoFar[0] = 1;
    uniqueSubsEndHere[0] = 1;
    subsEndHere[0] = 1;
    int lastIndexEndingWithOne = 29;
    int lastIndexEndingWithZero = 29; 
    for(int i = 1; i <= length; i++) {
        int bit = stringInBinary[i];
        if(bit == 0) {
            subsEndHere[i] = subsSoFar[i-1];
            uniqueSubsEndHere[i] = subsSoFar[i-1] - subsEndHere[lastIndexEndingWithZero];
            subsSoFar[i] = subsSoFar[i-1] + uniqueSubsEndHere[i];
            lastIndexEndingWithZero = i;
        } else {
            subsEndHere[i] = subsSoFar[i-1];
            uniqueSubsEndHere[i] = subsSoFar[i-1] - subsEndHere[lastIndexEndingWithOne];
            subsSoFar[i] = subsSoFar[i-1] + uniqueSubsEndHere[i];
            lastIndexEndingWithOne = i;
        }
    }
    return subsSoFar[length] - 1;
}

int main() {
    int n;
    cin >> n;
    if(n <= 10) {
        cout << "Such n does not exist!" << "\n";
        return 0;
    }
    stringInBinary[1] = 1;
    length = 1;
    while(amountOfSubstrings() != n) {
        increase();
    }
    for(int i = length; i >= 1; i--) {
        cout << stringInBinary[i];
    }
}

Test details

Test 1

Group: 1

Verdict:

input
1

correct output
1

user output
Such n does not exist!

Test 2

Group: 1

Verdict:

input
2

correct output
11

user output
Such n does not exist!

Test 3

Group: 1

Verdict:

input
3

correct output
10

user output
Such n does not exist!

Test 4

Group: 1

Verdict:

input
4

correct output
1111

user output
Such n does not exist!

Test 5

Group: 1

Verdict:

input
5

correct output
110

user output
Such n does not exist!

Test 6

Group: 1

Verdict:

input
6

correct output
101

user output
Such n does not exist!

Test 7

Group: 1

Verdict:

input
7

correct output
1110

user output
Such n does not exist!

Test 8

Group: 1

Verdict:

input
8

correct output
1100

user output
Such n does not exist!

Test 9

Group: 1

Verdict:

input
9

correct output
1101

user output
Such n does not exist!

Test 10

Group: 1

Verdict:

input
10

correct output
1001

user output
Such n does not exist!

Test 11

Group: 2

Verdict: ACCEPTED

input
38

correct output
1101011

user output
1101011

Test 12

Group: 2

Verdict: ACCEPTED

input
13

correct output
11011

user output
11011

Test 13

Group: 2

Verdict: ACCEPTED

input
90

correct output
111001010

user output
100100010

Test 14

Group: 2

Verdict: ACCEPTED

input
25

correct output
110010

user output
101100

Test 15

Group: 2

Verdict: ACCEPTED

input
82

correct output
111001101

user output
100010011

Test 16

Group: 2

Verdict: ACCEPTED

input
94

correct output
1100011110

user output
1000011100

Test 17

Group: 2

Verdict: ACCEPTED

input
100

correct output
1111001001

user output
1001001111

Test 18

Group: 2

Verdict: ACCEPTED

input
99

correct output
110010010

user output
100011010

Test 19

Group: 2

Verdict: ACCEPTED

input
98

correct output
110110010

user output
100111010

Test 20

Group: 2

Verdict: ACCEPTED

input
92

correct output
100110001

user output
100011001

Test 21

Group: 3

Verdict: ACCEPTED

input
1666

correct output
101101100100101

user output
100100010101010

Test 22

Group: 3

Verdict: ACCEPTED

input
897

correct output
11101001101010

user output
10100010110100

Test 23

Group: 3

Verdict: ACCEPTED

input
4466

correct output
111101010110100101

user output
101001001110001011

Test 24

Group: 3

Verdict: ACCEPTED

input
4240

correct output
11011001011010101

user output
10101011010011011

Test 25

Group: 3

Verdict: ACCEPTED

input
3089

correct output
1011001010100101

user output
1010010101001101

Test 26

Group: 3

Verdict: ACCEPTED

input
4697

correct output
11010101101010110

user output
10010101001010100

Test 27

Group: 3

Verdict: ACCEPTED

input
4608

correct output
11010110101001010

user output
10101101010010100

Test 28

Group: 3

Verdict: ACCEPTED

input
4625

correct output
111011001100101001

user output
100010101110110110

Test 29

Group: 3

Verdict: ACCEPTED

input
4611

correct output
11010101010101100

user output
10101101011010100

Test 30

Group: 3

Verdict: ACCEPTED

input
4917

correct output
10110100101010110

user output
10010101011010010

Test 31

Group: 4

Verdict:

input
178555

correct output
1011010110110101010110110

user output
(empty)

Test 32

Group: 4

Verdict:

input
864856

correct output
10111010110110100100101010010

user output
(empty)

Test 33

Group: 4

Verdict:

input
112146

correct output
1101110101011001100100110

user output
(empty)

Test 34

Group: 4

Verdict:

input
741124

correct output
1011010011010101100101011010

user output
(empty)

Test 35

Group: 4

Verdict:

input
511902

correct output
1011010100011010100101001110

user output
(empty)

Test 36

Group: 4

Verdict:

input
920019

correct output
11100100101101010101001101010

user output
(empty)

Test 37

Group: 4

Verdict:

input
933943

correct output
10101011010100100110100111001

user output
(empty)

Test 38

Group: 4

Verdict:

input
973410

correct output
1011010101011010101010101001

user output
(empty)

Test 39

Group: 4

Verdict:

input
954943

correct output
10110110010011010100100110101

user output
(empty)

Test 40

Group: 4

Verdict:

input
911674

correct output
1010110010110101010101010110

user output
(empty)