CSES - Datatähti 2025 loppu - Results
Submission details
Task:Piiri
Sender:vgtcross
Submission time:2025-01-18 13:50:19 +0200
Language:C++ (C++20)
Status:READY
Result:100
Feedback
groupverdictscore
#1ACCEPTED14
#2ACCEPTED12
#3ACCEPTED26
#4ACCEPTED48
Test results
testverdicttimegroup
#1ACCEPTED0.02 s1, 2, 4details
#2ACCEPTED0.02 s1, 2, 4details
#3ACCEPTED0.02 s1, 2, 4details
#4ACCEPTED0.01 s1, 2, 4details
#5ACCEPTED0.02 s1, 2, 4details
#6ACCEPTED0.02 s1, 2, 4details
#7ACCEPTED0.01 s1, 2, 4details
#8ACCEPTED0.01 s1, 2, 4details
#9ACCEPTED0.02 s1, 2, 4details
#10ACCEPTED0.01 s2, 4details
#11ACCEPTED0.01 s2, 4details
#12ACCEPTED0.02 s2, 4details
#13ACCEPTED0.01 s2, 4details
#14ACCEPTED0.02 s2, 4details
#15ACCEPTED0.02 s2, 4details
#16ACCEPTED0.02 s2, 4details
#17ACCEPTED0.04 s3details
#18ACCEPTED0.04 s3details
#19ACCEPTED0.03 s3details
#20ACCEPTED0.02 s3details
#21ACCEPTED0.01 s3details
#22ACCEPTED0.11 s4details
#23ACCEPTED0.08 s4details
#24ACCEPTED0.07 s4details
#25ACCEPTED0.11 s4details
#26ACCEPTED0.03 s4details
#27ACCEPTED0.04 s4details
#28ACCEPTED0.06 s4details

Code

#include <bits/stdc++.h>

#define debug(x) cout << #x << ": " << x << endl
#define fi first
#define se second
#define all(x) begin(x),end(x)
#define rall(x) rbegin(x),rend(x)

using namespace std;
using ll = long long;

string ask(string s) {
    cout << "? " << s << endl;
    string t;
    cin >> t;
    return t;
}

void find_fail(string s, string p) {
    if (count(all(s), '1') < count(all(p), '1')) {
        int j = 0;
        while (true) {
            while (s[j] == '1') ++j;
            s[j] = '1';
            string t = ask(s);
            if (t == p) {
                cout << "YES\n";
                cout << s << '\n';
                s[j] = '0';
                cout << s << endl;
                return;
            }
            p = t;
            ++j;
        }
    } else {
        int j = 0;
        while (true) {
            while (s[j] == '0') ++j;
            s[j] = '0';
            string t = ask(s);
            if (t == p) {
                cout << "YES\n";
                cout << s << '\n';
                s[j] = '1';
                cout << s << endl;
                return;
            }
            p = t;
            ++j;
        }
    }
}

void solve() {
    int n, m;
    cin >> n >> m;

    string s(n, '0');
    vector<int> v(m, -1);
    for (int i = 0; i < n; ++i) {
        s[i] = '1';
        string t = ask(s);
        if (count(all(t), '1') != 1) {
            find_fail(s, t);
            return;
        }
        int j = t.find('1');
        if (v[j] != -1) {
            cout << "YES\n";
            cout << s << '\n';
            s[i] = '0';
            s[v[j]] = '1';
            cout << s << endl;
            return;
        }
        v[j] = i;
        s[i] = '0';
    }

    s = string(n, '1');
    for (int i = 0; i < n; ++i) {
        s[i] = '0';
        string t = ask(s);
        if (count(all(t), '0') != 1) {
            find_fail(s, t);
            return;
        }
        s[i] = '1';
    }

    cout << "NO\n";
}

int main() {
    cin.tie(0) -> sync_with_stdio(0);

    solve();
}

Test details

Test 1

Group: 1, 2, 4

Verdict: ACCEPTED

input
2 2
NO
1 2 

correct output
(empty)

user output
2 2
? 10
10
? 01
01
...

Error:
1 1 100 0

Test 2

Group: 1, 2, 4

Verdict: ACCEPTED

input
2 2
YES
1 2 
conj 2 1

correct output
(empty)

user output
2 2
? 10
10
? 01
00
...

Error:
1 1 100 0

Test 3

Group: 1, 2, 4

Verdict: ACCEPTED

input
10 10
NO
6 2 1 8 3 9 4 10 5 7 

correct output
(empty)

user output
10 10
? 1000000000
0010000000
? 0100000000
0100000000
...
Truncated

Error:
1 1 100 0

Test 4

Group: 1, 2, 4

Verdict: ACCEPTED

input
10 10
YES
6 10 2 3 9 8 4 5 7 1 
disj 2 2
7 3 

correct output
(empty)

user output
10 10
? 1000000000
0000000001
? 0100000000
0010000000
...
Truncated

Error:
1 1 100 0

Test 5

Group: 1, 2, 4

Verdict: ACCEPTED

input
10 10
YES
8 4 9 10 6 3 7 2 1 5 
disj 1 5
2 9 1 4 3 

correct output
(empty)

user output
10 10
? 1000000000
0000000010
? 0100000000
0000000100
...
Truncated

Error:
1 1 100 0

Test 6

Group: 1, 2, 4

Verdict: ACCEPTED

input
10 10
YES
8 6 2 4 10 5 7 9 1 3 
disj 9 8
3 6 2 10 8 7 9 5 

correct output
(empty)

user output
10 10
? 1000000000
0000000010
? 0100000000
0010000000
...
Truncated

Error:
1 1 100 0

Test 7

Group: 1, 2, 4

Verdict: ACCEPTED

input
10 10
YES
1 2 3 5 8 6 4 9 10 7 
conj 4 2
8 10 

correct output
(empty)

user output
10 10
? 1000000000
1000000000
? 0100000000
0100000000
...
Truncated

Error:
1 1 100 0

Test 8

Group: 1, 2, 4

Verdict: ACCEPTED

input
10 10
YES
9 8 3 2 10 6 1 4 5 7 
conj 2 5
3 1 2 7 4 

correct output
(empty)

user output
10 10
? 1000000000
0000001000
? 0100000000
0001000000
...
Truncated

Error:
1 1 100 0

Test 9

Group: 1, 2, 4

Verdict: ACCEPTED

input
10 10
YES
7 1 5 8 9 4 3 6 2 10 
conj 4 8
9 6 3 5 1 10 7 4 

correct output
(empty)

user output
10 10
? 1000000000
0100000000
? 0100000000
0000000010
...
Truncated

Error:
1 1 100 0

Test 10

Group: 2, 4

Verdict: ACCEPTED

input
30 30
NO
17 30 6 20 28 16 7 4 14 25 18 ...

correct output
(empty)

user output
30 30
? 1000000000000000000000000000...
Truncated

Error:
1 1 100 0

Test 11

Group: 2, 4

Verdict: ACCEPTED

input
30 30
YES
13 22 6 23 16 20 9 30 8 18 2 1...

correct output
(empty)

user output
30 30
? 1000000000000000000000000000...
Truncated

Error:
1 1 100 0

Test 12

Group: 2, 4

Verdict: ACCEPTED

input
30 30
YES
12 30 22 9 3 7 27 21 2 28 10 1...

correct output
(empty)

user output
30 30
? 1000000000000000000000000000...
Truncated

Error:
1 1 100 0

Test 13

Group: 2, 4

Verdict: ACCEPTED

input
30 30
YES
4 7 27 17 26 24 9 20 19 22 10 ...

correct output
(empty)

user output
30 30
? 1000000000000000000000000000...
Truncated

Error:
1 1 100 0

Test 14

Group: 2, 4

Verdict: ACCEPTED

input
30 30
YES
7 2 24 11 4 30 17 6 9 29 5 22 ...

correct output
(empty)

user output
30 30
? 1000000000000000000000000000...
Truncated

Error:
1 1 100 0

Test 15

Group: 2, 4

Verdict: ACCEPTED

input
30 30
YES
8 12 21 26 3 23 17 4 5 6 22 16...

correct output
(empty)

user output
30 30
? 1000000000000000000000000000...
Truncated

Error:
1 1 100 0

Test 16

Group: 2, 4

Verdict: ACCEPTED

input
30 30
YES
8 20 19 21 24 23 25 28 5 10 13...

correct output
(empty)

user output
30 30
? 1000000000000000000000000000...
Truncated

Error:
1 1 100 0

Test 17

Group: 3

Verdict: ACCEPTED

input
1000 999
YES
122 260 455 752 587 951 433 81...

correct output
(empty)

user output
1000 999
? 1000000000000000000000000000...
Truncated

Error:
1 1 100 0

Test 18

Group: 3

Verdict: ACCEPTED

input
1000 999
YES
593 999 981 107 187 851 19 574...

correct output
(empty)

user output
1000 999
? 1000000000000000000000000000...
Truncated

Error:
1 1 100 0

Test 19

Group: 3

Verdict: ACCEPTED

input
1000 999
YES
99 213 558 569 343 613 593 85 ...

correct output
(empty)

user output
1000 999
? 1000000000000000000000000000...
Truncated

Error:
1 1 100 0

Test 20

Group: 3

Verdict: ACCEPTED

input
1000 999
YES
60 15 857 450 862 173 675 384 ...

correct output
(empty)

user output
1000 999
? 1000000000000000000000000000...
Truncated

Error:
1 1 100 0

Test 21

Group: 3

Verdict: ACCEPTED

input
3 2
YES
3 1 
disj 1 2
2 1 

correct output
(empty)

user output
3 2
? 100
01
? 010
00
...

Error:
1 1 100 0

Test 22

Group: 4

Verdict: ACCEPTED

input
1000 1000
NO
493 409 829 533 156 443 530 80...

correct output
(empty)

user output
1000 1000
? 1000000000000000000000000000...
Truncated

Error:
1 1 100 0

Test 23

Group: 4

Verdict: ACCEPTED

input
1000 1000
YES
16 450 665 56 968 1 984 545 90...

correct output
(empty)

user output
1000 1000
? 1000000000000000000000000000...
Truncated

Error:
1 1 100 0

Test 24

Group: 4

Verdict: ACCEPTED

input
1000 1000
YES
503 289 147 513 833 468 199 82...

correct output
(empty)

user output
1000 1000
? 1000000000000000000000000000...
Truncated

Error:
1 1 100 0

Test 25

Group: 4

Verdict: ACCEPTED

input
1000 1000
YES
294 617 164 497 46 961 234 12 ...

correct output
(empty)

user output
1000 1000
? 1000000000000000000000000000...
Truncated

Error:
1 1 100 0

Test 26

Group: 4

Verdict: ACCEPTED

input
1000 1000
YES
465 496 15 263 713 784 337 487...

correct output
(empty)

user output
1000 1000
? 1000000000000000000000000000...
Truncated

Error:
1 1 100 0

Test 27

Group: 4

Verdict: ACCEPTED

input
1000 1000
YES
788 567 826 731 874 95 502 20 ...

correct output
(empty)

user output
1000 1000
? 1000000000000000000000000000...
Truncated

Error:
1 1 100 0

Test 28

Group: 4

Verdict: ACCEPTED

input
1000 1000
YES
611 543 496 586 262 765 461 83...

correct output
(empty)

user output
1000 1000
? 1000000000000000000000000000...
Truncated

Error:
1 1 100 0