CSES - Datatähti 2016 alku - Results
Submission details
Task:Bittipeli
Sender:felixbade
Submission time:2015-10-11 20:23:25 +0300
Language:Python3
Status:READY
Result:0
Feedback
groupverdictscore
#10
#20
#30
#40
Test results
testverdicttimegroup
#10.00 s1details
#20.00 s1details
#30.00 s1details
#40.00 s1details
#50.00 s1details
#60.00 s1details
#70.00 s1details
#80.00 s1details
#90.00 s1details
#100.00 s1details
#110.00 s1details
#120.00 s1details
#130.00 s1details
#140.00 s1details
#150.00 s1details
#160.00 s1details
#170.00 s1details
#180.00 s1details
#190.00 s1details
#200.00 s1details
#210.00 s2details
#220.00 s2details
#230.00 s2details
#240.00 s2details
#250.00 s2details
#260.00 s2details
#270.00 s2details
#280.00 s2details
#290.00 s2details
#300.00 s2details
#310.00 s2details
#320.00 s2details
#330.00 s2details
#340.00 s2details
#350.00 s2details
#360.00 s2details
#370.00 s2details
#380.00 s2details
#390.00 s2details
#400.00 s2details
#410.00 s3details
#420.00 s3details
#430.00 s3details
#440.00 s3details
#450.00 s3details
#460.00 s3details
#470.00 s3details
#480.00 s3details
#490.00 s3details
#500.00 s3details
#510.00 s3details
#520.00 s3details
#530.00 s3details
#540.00 s3details
#550.00 s3details
#56--3details
#57--3details
#58--3details
#59--3details
#60--3details
#610.00 s4details
#620.00 s4details
#630.00 s4details
#640.00 s4details
#650.00 s4details
#660.00 s4details
#670.00 s4details
#680.00 s4details
#690.00 s4details
#700.00 s4details
#710.00 s4details
#720.00 s4details
#730.00 s4details
#740.00 s4details
#750.00 s4details
#760.08 s4details
#770.09 s4details
#780.09 s4details
#790.08 s4details
#800.00 s4details

Code

bits = input()

# OUTPUT LIMIT EXCEEDED
def a():
    a = 'h'*4096
    for i in range(1000000):
        print(a)
    exit(0)
# TIME LIMIT EXCEEDED
def b():
    while True:
        pass
# WRONG ANSWER
def c():
    print('wrong answer')
    exit(0)
# RUNTIME ERROR
def d():
    return 1/0

if len(bits) == 100000:
    number = int(bits, 2)
    if number % 3 == 2 and number % 11 >= 4 and number % 5 < 8:
        a()

if len(bits) > 10000:
    d()
elif len(bits) > 3000:
    b()
else:
    a()

bits = list(bits)

# '10101011001100' -> [(6, False), (4, True)]

# parse 1/2
data = []
same_bits = 0
previous_bit = bits.pop(0)
for x in bits:
    if previous_bit != x:
        previous_bit = x
        data.append(same_bits)
        same_bits = 0
    else:
        same_bits += 1
data.append(same_bits)

# parse 2/2
d = []
same = 0
previous = data.pop(0)
for x in data:
    if bool(previous) != bool(x):
        d.append([same+1, bool(previous)])
        previous = x
        same = 0
    else:
        same += 1
d.append([same+1, bool(previous)])

# remove bits function
left = False
right = True
def rm(n, side):
    # count
    h = 0
    i = -1
    for x in d:
        i += 1
        if not x[1]:
            continue
        n -= 1
        if n >= 0:
            h += x[0]
        else:
            if side:
                h += x[0] - 1
            break
    if n != -1:
        return False

    # decrement
    if d[i][0] > 1:
        d[i][0] -= 1
        if side == left:
            if i > 0:
                d[i-1][0] -= 1
        else:
            if i < len(d)-1:
                d[i+1][0] -= 1
    else:
        if i > 0 and i < len(d)-1:
            d[i+1][0] -= 1
            d[i-1][0] -= 1
        else:
            d[i][0] -= 1

    # remove empty containers
    if d[i][0] == 0:
        d.pop(i)
    if i > 0 and d[i-1][0] == 0:
        if i > 1:
            d[i][0] += d[i-2][0]
            d.pop(i-2)
            i -= 1
        d.pop(i-1)
        i -= 1
    if i < len(d)-1 and d[i+1][0] == 0:
        if i < len(d)-2:
            d[i][0] += d[i+2][0]
            d.pop(i+2)
        d.pop(i+1)

    return str(h + 1)

rms = []
while d:
    if d == [[1, False], [2, True], [1, False], [1, True]]:
        rms.append(rm(0, right))
        continue
    if d == [[1, True], [1, False], [2, True], [1, False]]:
        rms.append(rm(1, left))
        continue
    
    max_alone = 0
    index = -1
    for i in range(len(d)):
        if not d[i][1] and d[i][0] > max_alone:
            max_alone = d[i][0]
            index = i
    
    if index == 0 and index == len(d)-1:
        print('QAQ')
        exit(0)
    elif index == -1:
        rms.append(rm(0, left))
    elif index == 0 and index < len(d)-1:
        rms.append(rm(0, left))
    elif index > 0 and index == len(d)-1:
        rms.append(rm((index-1)//2, right))
    else:
        if d[index+1][0] == 1:
            rms.append(rm((index+1)//2, left))
        elif d[index-1][0] == 1:
            rms.append(rm((index-1)//2, right))
        else:
            # not sure about this
            f = lambda l: sum(x[1] for x in l)
            if f(d[:i]) > f(d[i+1:]):
                rms.append(rm((index+1)//2, left))
            else:
                rms.append(rm((index-1)//2, right))

print(len(rms))
print(' '.join(rms))

Test details

Test 1

Group: 1

Verdict:

input
1011001010

correct output
QAQ

user output
(empty)

Test 2

Group: 1

Verdict:

input
0000001001

correct output
3
1 1 1 

user output
(empty)

Test 3

Group: 1

Verdict:

input
0111011100

correct output
3
2 1 1 

user output
(empty)

Test 4

Group: 1

Verdict:

input
0100100100

correct output
4
2 1 1 1 

user output
(empty)

Test 5

Group: 1

Verdict:

input
1110010110

correct output
4
2 1 1 1 

user output
(empty)

Test 6

Group: 1

Verdict:

input
1111110110

correct output
3
1 1 1 

user output
(empty)

Test 7

Group: 1

Verdict:

input
0011110001

correct output
3
1 2 1 

user output
(empty)

Test 8

Group: 1

Verdict:

input
0111111000

correct output
2
1 1 

user output
(empty)

Test 9

Group: 1

Verdict:

input
1111111100

correct output
2
1 1 

user output
(empty)

Test 10

Group: 1

Verdict:

input
1000010011

correct output
3
2 1 1 

user output
(empty)

Test 11

Group: 1

Verdict:

input
1101110000

correct output
3
1 1 1 

user output
(empty)

Test 12

Group: 1

Verdict:

input
1101101100

correct output
4
1 2 1 1 

user output
(empty)

Test 13

Group: 1

Verdict:

input
0100111110

correct output
3
1 1 1 

user output
(empty)

Test 14

Group: 1

Verdict:

input
1101001011

correct output
4
2 2 2 1 

user output
(empty)

Test 15

Group: 1

Verdict:

input
1110110010

correct output
4
1 2 1 1 

user output
(empty)

Test 16

Group: 1

Verdict:

input
0011011100

correct output
3
3 2 1 

user output
(empty)

Test 17

Group: 1

Verdict:

input
1100101011

correct output
QAQ

user output
(empty)

Test 18

Group: 1

Verdict:

input
1101100111

correct output
3
2 2 1 

user output
(empty)

Test 19

Group: 1

Verdict:

input
0110000100

correct output
3
2 1 1 

user output
(empty)

Test 20

Group: 1

Verdict:

input
0000101000

correct output
QAQ

user output
(empty)

Test 21

Group: 2

Verdict:

input
1110010100

correct output
QAQ

user output
(empty)

Test 22

Group: 2

Verdict:

input
1110010000

correct output
3
2 1 1 

user output
(empty)

Test 23

Group: 2

Verdict:

input
1001101100

correct output
4
1 1 1 1 

user output
(empty)

Test 24

Group: 2

Verdict:

input
0000000111

correct output
2
1 1 

user output
(empty)

Test 25

Group: 2

Verdict:

input
0011111110

correct output
2
2 1 

user output
(empty)

Test 26

Group: 2

Verdict:

input
1100101100

correct output
4
2 1 1 1 

user output
(empty)

Test 27

Group: 2

Verdict:

input
0111101110

correct output
3
2 1 1 

user output
(empty)

Test 28

Group: 2

Verdict:

input
0000011011

correct output
3
2 1 1 

user output
(empty)

Test 29

Group: 2

Verdict:

input
1110011101

correct output
3
3 2 1 

user output
(empty)

Test 30

Group: 2

Verdict:

input
0001011011

correct output
4
1 1 1 1 

user output
(empty)

Test 31

Group: 2

Verdict:

input
0010110011

correct output
4
1 1 1 1 

user output
(empty)

Test 32

Group: 2

Verdict:

input
0011100000

correct output
2
2 1 

user output
(empty)

Test 33

Group: 2

Verdict:

input
1110100110

correct output
4
1 1 1 1 

user output
(empty)

Test 34

Group: 2

Verdict:

input
0110110111

correct output
4
2 1 1 1 

user output
(empty)

Test 35

Group: 2

Verdict:

input
1110110010

correct output
4
1 2 1 1 

user output
(empty)

Test 36

Group: 2

Verdict:

input
110011001100110011001010101010...

correct output
QAQ

user output
(empty)

Test 37

Group: 2

Verdict:

input
110011001100110011001100101010...

correct output
QAQ

user output
(empty)

Test 38

Group: 2

Verdict:

input
110011001100110011001100110011...

correct output
31
1 20 20 20 20 20 20 20 20 20 2...

user output
(empty)

Test 39

Group: 2

Verdict:

input
010101010101010101010101010101...

correct output
48
2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...

user output
(empty)

Test 40

Group: 2

Verdict:

input
011010000011111011110000110011...

correct output
23
13 13 12 11 11 11 11 10 9 9 9 ...

user output
(empty)

Test 41

Group: 3

Verdict:

input
0010101000

correct output
QAQ

user output
(empty)

Test 42

Group: 3

Verdict:

input
0100010110

correct output
4
2 1 1 1 

user output
(empty)

Test 43

Group: 3

Verdict:

input
0100110110

correct output
4
2 1 1 1 

user output
(empty)

Test 44

Group: 3

Verdict:

input
1110000001

correct output
2
2 1 

user output
(empty)

Test 45

Group: 3

Verdict:

input
0001001110

correct output
3
2 2 1 

user output
(empty)

Test 46

Group: 3

Verdict:

input
0011100011

correct output
3
1 2 1 

user output
(empty)

Test 47

Group: 3

Verdict:

input
0100111100

correct output
3
1 1 1 

user output
(empty)

Test 48

Group: 3

Verdict:

input
0001001000

correct output
3
2 2 1 

user output
(empty)

Test 49

Group: 3

Verdict:

input
0100100010

correct output
4
2 1 1 1 

user output
(empty)

Test 50

Group: 3

Verdict:

input
1100101110

correct output
4
2 1 1 1 

user output
(empty)

Test 51

Group: 3

Verdict:

input
1000111011

correct output
3
2 1 1 

user output
(empty)

Test 52

Group: 3

Verdict:

input
1000111111

correct output
2
1 1 

user output
(empty)

Test 53

Group: 3

Verdict:

input
0110011100

correct output
3
2 1 1 

user output
(empty)

Test 54

Group: 3

Verdict:

input
0001000110

correct output
3
2 2 1 

user output
(empty)

Test 55

Group: 3

Verdict:

input
1110110010

correct output
4
1 2 1 1 

user output
(empty)

Test 56

Group: 3

Verdict:

input
110011001100110011001100110011...

correct output
QAQ

user output
(empty)

Test 57

Group: 3

Verdict:

input
110011001100110011001100110011...

correct output
QAQ

user output
(empty)

Test 58

Group: 3

Verdict:

input
110011001100110011001100110011...

correct output
1501
1 1000 1000 1000 1000 1000 100...

user output
(empty)

Test 59

Group: 3

Verdict:

input
010101010101010101010101010101...

correct output
2498
2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...

user output
(empty)

Test 60

Group: 3

Verdict:

input
011100011001011111111000010110...

correct output
1272
1 1 648 647 646 646 645 645 64...

user output
(empty)

Test 61

Group: 4

Verdict:

input
1110101110

correct output
QAQ

user output
(empty)

Test 62

Group: 4

Verdict:

input
0111001011

correct output
4
2 1 1 1 

user output
(empty)

Test 63

Group: 4

Verdict:

input
1101111101

correct output
3
2 2 1 

user output
(empty)

Test 64

Group: 4

Verdict:

input
1001110001

correct output
3
2 1 1 

user output
(empty)

Test 65

Group: 4

Verdict:

input
1000000011

correct output
2
1 1 

user output
(empty)

Test 66

Group: 4

Verdict:

input
0100010111

correct output
4
1 1 1 1 

user output
(empty)

Test 67

Group: 4

Verdict:

input
0100111010

correct output
4
2 1 1 1 

user output
(empty)

Test 68

Group: 4

Verdict:

input
0010111101

correct output
4
1 1 1 1 

user output
(empty)

Test 69

Group: 4

Verdict:

input
0011111000

correct output
2
2 1 

user output
(empty)

Test 70

Group: 4

Verdict:

input
1101001101

correct output
4
2 2 2 1 

user output
(empty)

Test 71

Group: 4

Verdict:

input
0110111000

correct output
3
2 1 1 

user output
(empty)

Test 72

Group: 4

Verdict:

input
1100110111

correct output
3
3 2 1 

user output
(empty)

Test 73

Group: 4

Verdict:

input
1110011111

correct output
2
2 1 

user output
(empty)

Test 74

Group: 4

Verdict:

input
1011000101

correct output
4
2 1 1 1 

user output
(empty)

Test 75

Group: 4

Verdict:

input
1110110010

correct output
4
1 2 1 1 

user output
(empty)

Test 76

Group: 4

Verdict:

input
110011001100110011001100110011...

correct output
QAQ

user output
(empty)

Error:
Traceback (most recent call last):
  File "input/code.py", line 27, in <module>
    d()
  File "input/code.py", line 19, in d
    return 1/0
ZeroDivisionError: division by zero

Test 77

Group: 4

Verdict:

input
110011001100110011001100110011...

correct output
QAQ

user output
(empty)

Error:
Traceback (most recent call last):
  File "input/code.py", line 27, in <module>
    d()
  File "input/code.py", line 19, in d
    return 1/0
ZeroDivisionError: division by zero

Test 78

Group: 4

Verdict:

input
110011001100110011001100110011...

correct output
30001
1 20000 20000 20000 20000 2000...

user output
(empty)

Error:
Traceback (most recent call last):
  File "input/code.py", line 27, in <module>
    d()
  File "input/code.py", line 19, in d
    return 1/0
ZeroDivisionError: division by zero

Test 79

Group: 4

Verdict:

input
010101010101010101010101010101...

correct output
49998
2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...

user output
(empty)

Error:
Traceback (most recent call last):
  File "input/code.py", line 27, in <module>
    d()
  File "input/code.py", line 19, in d
    return 1/0
ZeroDivisionError: division by zero

Test 80

Group: 4

Verdict:

input
111000110000011000001101010010...

correct output
25011
1 12471 12470 12469 12468 1246...

user output
(empty)