QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#798448#9783. Duloc Networkucup-team5071#RE 3ms3916kbC++208.0kb2024-12-04 13:51:032024-12-04 13:51:03

Judging History

你现在查看的是最新测评结果

  • [2024-12-04 13:51:03]
  • 评测
  • 测评结果:RE
  • 用时:3ms
  • 内存:3916kb
  • [2024-12-04 13:51:03]
  • 提交

answer

#include <bits/stdc++.h>
using namespace std;

const bool TEST = false;

mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count());

struct interactor
{
    int n;
    int query_count;
    vector<vector<int>> G;
    int ans;
    void init()
    {
        query_count = 0;
        if (TEST)
        {
            n = 200;
            G = vector<vector<int>>(n, vector<int>(n));
            for (int i = 0; i < n; ++i)
            {
                for (int j = i + 1; j < n; ++j)
                {
                    G[i][j] = G[j][i] = 1;
                    break;

                    // int tmp = rng() % 40;
                    // int x = (tmp == 0);
                    // G[i][j] = G[j][i] = x;
                }
            }
            const int N = 30;
            for (int i = N - 1; i + 1 < n; i += N)
            {
                G[i][i + 1] = 0;
                G[i + 1][i] = 0;
            }
            int viscnt = 0;
            vector<int> vis(n);
            auto dfs = [&](auto &self, int now) -> void
            {
                vis[now] = 1;
                viscnt++;
                for (int i = 0; i < n; ++i)
                {
                    if (!vis[i] && G[now][i] == 1)
                    {
                        self(self, i);
                    }
                }
            };
            dfs(dfs, 0);
            if (viscnt == n)
            {
                ans = 1;
            }
            else
            {
                ans = 0;
            }
        }
    }
    int readn()
    {
        if (TEST)
        {
            return n;
        }
        else
        {
            cin >> n;
            return n;
        }
    }
    int query(const string &s)
    {
        query_count++;
        if (TEST == true)
        {
            assert((int)s.size() == n);
            int cnt = 0;
            vector<int> ok(n);
            for (int i = 0; i < n; ++i) // i是否能选
            {
                if (s[i] == '1')
                {
                    continue;
                }
                for (int j = 0; j < n; ++j)
                {
                    if (i == j)
                        continue;
                    if (s[j] == '0')
                        continue;
                    if (G[i][j] == 1)
                    {
                        // cout << i << " " << j << endl;
                        ok[i] = 1;
                        cnt++;
                        break;
                    }
                }
            }
            // cout << "Q: " << s << " " << cnt << endl;
            return cnt;
        }
        else
        {
            cout << "? " << s << endl;
            int res;
            cin >> res;
            return res;
        }
    }
    void answer(int x)
    {
        if (TEST)
        {
            cout << query_count << endl;
            if (x != ans)
            {
                cout << "WA" << endl;
                cout << "ANS : " << ans << " OUT: " << x << endl;
                for (int i = 0; i < n; ++i)
                {
                    for (int j = 0; j < n; ++j)
                    {
                        cout << G[i][j] << " ";
                    }
                    cout << endl;
                }
                exit(1);
            }
            else
            {
                // cout << "AC" << endl;
            }
        }
        else
        {
            cout << "! " << x << endl;
        }
    }
    void outputG()
    {
        cout << n << endl;
        for (int i = 0; i < n; ++i)
        {
            for (int j = 0; j < n; ++j)
            {
                cout << G[i][j] << " ";
            }
            cout << endl;
        }
    }
} inter;
struct SSS
{
    set<int> st;
    int whitecnt;
    int id;
};

void solve()
{

    inter.init();
    // inter.outputG();
    int n = inter.readn();
    vector<int> fa(n);
    iota(fa.begin(), fa.end(), 0);
    vector<SSS> a(n);

    auto get_fa = [&](auto &self, int x) -> int
    {
        if (fa[x] != x)
        {
            return fa[x] = self(self, fa[x]);
        }
        else
        {
            return x;
        }
    };

    auto mergeset = [](const set<int> &s1, const set<int> &s2) -> set<int>
    {
        set<int> res;
        for (auto x : s1)
        {
            res.insert(x);
        }
        for (auto x : s2)
        {
            res.insert(x);
        }
        return res;
    };

    auto set2s = [&](const set<int> &s) -> string
    {
        string res;
        res.assign(n, '0');
        for (auto x : s)
        {
            res[x] = '1';
        }
        return res;
    };
    vector<int> SSS;
    int tot = 0;
    for (int i = 0; i < n; ++i)
    {
        set<int> setx{i};
        int res = inter.query(set2s(setx));
        if (res == 0)
        {
            inter.answer(0);
            return;
        }
        a[i].st = setx;
        a[i].whitecnt = res;
        a[i].id = ++tot;
    }
    set<pair<int, int>> vised;

    int not_flag = 0;
    vector<int> minn(n);
    while (inter.query_count <= 3498)
    {
        int x = 0, y;
        // x = rng() % n;
        auto gmin = [&]()
        {
            int x = 0;
            int minwhitecnt = 1000;
            for (int i = 0; i < n; ++i)
            {
                int fx = get_fa(get_fa, i);
                if (a[fx].whitecnt < minwhitecnt)
                {
                    x = i;
                    minwhitecnt = a[fx].whitecnt;
                }
            }
            return x;
        };
        auto gmax = [&]()
        {
            int x = 0;
            int minwhitecnt = 0;
            for (int i = 0; i < n; ++i)
            {
                int fx = get_fa(get_fa, i);
                if (a[fx].whitecnt > minwhitecnt)
                {
                    x = i;
                    minwhitecnt = a[fx].whitecnt;
                }
            }
            return x;
        };
        if (not_flag < 20)
        {
            // x = rng() % n;
            x = rng() % 2 ? gmax() : gmin();
            if (minn[x] == n)
            {
                x = rng() % n;
            }
            y = minn[x]++;
        }
        else
        {
            x = rng() % n;
            y = rng() % n;
        }

        while (x == y)
        {
            // x = rng() % n;
            y = rng() % n;
        }
        int fx = get_fa(get_fa, x);
        int fy = get_fa(get_fa, y);
        if (fx == fy)
            continue;
        int xid = a[fx].id;
        int yid = a[fy].id;

        auto p = make_pair(xid, yid);
        if (p.first > p.second)
        {
            swap(p.first, p.second);
        }
        if (vised.count(p))
            continue;
        // cout << x << " " << y << " " << fx << " " << fy << endl;
        set<int> newst = mergeset(a[fx].st, a[fy].st);
        int qres = inter.query(set2s(newst));
        if (qres == 0)
        {
            if ((int)newst.size() == n)
            {
                inter.answer(1);
                return;
            }
            else
            {
                inter.answer(0);
                return;
            }
        }
        if (qres == a[fx].whitecnt + a[fy].whitecnt)
        {
            vised.insert(p);
            not_flag++;
            continue;
        }
        not_flag = 0;
        fa[fx] = fy;
        a[fy].whitecnt = qres;
        for (auto x : a[fx].st)
        {
            a[fy].st.insert(x);
        }
        // cout << "merge fx=" << a[fx].id << " fy=" << a[fy].id << " newid=" << tot + 1 << endl;
        a[fy].id = ++tot;
    }
    assert(1 == 2);
    // inter.answer(1);
}
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    // int T = 1000;
    int T = 1;
    // cin >> T;
    while (T--)
        solve();
    return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 1ms
memory: 3724kb

input:

4
1
3
2
2
2
1
0

output:

? 1000
? 0100
? 0010
? 0001
? 1100
? 1101
? 1111
! 1

result:

ok Correct answer with 7 queries.

Test #2:

score: 0
Accepted
time: 0ms
memory: 3652kb

input:

2
0

output:

? 10
! 0

result:

ok Correct answer with 1 queries.

Test #3:

score: 0
Accepted
time: 1ms
memory: 3600kb

input:

4
1
3
2
2
2
1
0

output:

? 1000
? 0100
? 0010
? 0001
? 1010
? 1110
? 1111
! 1

result:

ok Correct answer with 7 queries.

Test #4:

score: 0
Accepted
time: 0ms
memory: 3652kb

input:

2
0

output:

? 10
! 0

result:

ok Correct answer with 1 queries.

Test #5:

score: 0
Accepted
time: 2ms
memory: 3616kb

input:

50
3
1
1
1
1
4
3
1
1
2
3
3
2
1
2
4
3
1
1
1
2
4
1
3
1
4
3
2
2
2
4
2
2
1
1
2
1
2
4
1
1
3
3
3
6
2
1
3
2
3
4
3
8
2
2
2
9
5
9
9
7
8
2
8
8
10
9
3
9
9
4
10
2
9
12
2
8
9
10
12
2
7
8
8
8
8
9
11
8
4
7
8
2
3
10
5
13
10
9
10
11
12
11
12
13
13
13
3
13
14
2
13
14
13
14
14
2
14
13
2
13
12
12
12
12
13
11
10
9
8
11
...

output:

? 10000000000000000000000000000000000000000000000000
? 01000000000000000000000000000000000000000000000000
? 00100000000000000000000000000000000000000000000000
? 00010000000000000000000000000000000000000000000000
? 00001000000000000000000000000000000000000000000000
? 000001000000000000000000000000000...

result:

ok Correct answer with 157 queries.

Test #6:

score: 0
Accepted
time: 1ms
memory: 3668kb

input:

50
10
13
8
6
13
8
10
8
8
8
9
13
15
11
9
10
14
6
16
10
15
10
7
8
10
10
10
13
10
15
9
10
11
5
16
10
14
11
10
9
9
15
11
10
7
11
12
10
9
10
23
32
36
36
35
34
34
36
36
36
35
35
34
34
34
33
32
31
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0

output:

? 10000000000000000000000000000000000000000000000000
? 01000000000000000000000000000000000000000000000000
? 00100000000000000000000000000000000000000000000000
? 00010000000000000000000000000000000000000000000000
? 00001000000000000000000000000000000000000000000000
? 000001000000000000000000000000000...

result:

ok Correct answer with 99 queries.

Test #7:

score: 0
Accepted
time: 0ms
memory: 3916kb

input:

50
1
3
1
4
3
1
1
1
1
3
1
1
1
1
3
5
1
1
1
1
3
2
5
1
2
1
4
1
2
3
4
3
3
2
3
1
1
1
1
3
2
2
1
3
4
2
4
2
3
2
2
5
6
4
2
6
7
9
8
3
5
4
11
2
10
2
8
2
2
8
8
8
8
9
9
9
2
2
2
4
2
2
2
9
4
8
9
3
6
2
3
9
2
5
2
9
3
9
4
11
5
10
9
4
10
10
9
3
11
12
3
12
13
11
11
10
9
10
11
5
12
4
13
13
13
11
2
2
12
2
2
2
12
2
2
2
2
4...

output:

? 10000000000000000000000000000000000000000000000000
? 01000000000000000000000000000000000000000000000000
? 00100000000000000000000000000000000000000000000000
? 00010000000000000000000000000000000000000000000000
? 00001000000000000000000000000000000000000000000000
? 000001000000000000000000000000000...

result:

ok Correct answer with 177 queries.

Test #8:

score: 0
Accepted
time: 1ms
memory: 3680kb

input:

50
2
14
8
8
7
12
12
8
8
9
9
10
8
8
4
8
9
9
9
11
13
11
8
7
9
12
7
5
6
4
7
8
10
5
5
10
8
4
10
9
11
7
10
8
6
8
10
7
5
9
15
17
23
27
26
28
31
33
35
35
34
34
34
33
32
31
30
31
31
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0

output:

? 10000000000000000000000000000000000000000000000000
? 01000000000000000000000000000000000000000000000000
? 00100000000000000000000000000000000000000000000000
? 00010000000000000000000000000000000000000000000000
? 00001000000000000000000000000000000000000000000000
? 000001000000000000000000000000000...

result:

ok Correct answer with 100 queries.

Test #9:

score: 0
Accepted
time: 1ms
memory: 3660kb

input:

50
3
1
1
1
2
1
1
1
1
5
1
2
1
1
1
1
3
1
1
2
1
1
1
2
2
1
1
1
1
3
1
2
1
1
2
3
1
2
3
2
1
3
1
2
3
1
2
2
1
1
4
2
8
5
4
6
6
7
2
6
6
4
4
5
6
3
2
5
5
5
2
5
5
6
7
7
7
2
3
8
7
7
7
2
7
2
2
9
8
2
8
8
8
7
6
7
2
2
8
7
7
3
8
2
2
8
1
9
3
9
10
7
2
2
2
9
8
2
10
8
7
7
10
8
3
7
6
2
7
7
2
3
7
9
4
2
4
3
4
3
4
4
1
4
2
0

output:

? 10000000000000000000000000000000000000000000000000
? 01000000000000000000000000000000000000000000000000
? 00100000000000000000000000000000000000000000000000
? 00010000000000000000000000000000000000000000000000
? 00001000000000000000000000000000000000000000000000
? 000001000000000000000000000000000...

result:

ok Correct answer with 146 queries.

Test #10:

score: 0
Accepted
time: 2ms
memory: 3672kb

input:

100
1
2
1
1
1
1
1
1
3
3
1
1
2
3
4
1
2
2
2
1
2
2
1
2
2
1
1
1
3
2
1
2
2
1
4
1
1
1
3
2
4
1
3
2
3
3
3
1
1
1
1
2
1
2
2
4
3
1
2
1
1
1
1
3
3
3
2
1
1
2
1
2
2
3
2
1
5
3
5
1
1
1
1
1
1
1
1
3
4
1
2
1
2
1
1
2
1
3
2
1
6
2
3
7
6
6
2
6
6
2
6
2
6
2
2
2
4
4
8
7
8
9
2
8
2
3
4
8
5
2
3
3
3
8
2
8
8
8
10
3
4
4
2
3
2
4
3
5...

output:

? 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
? 0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
? 00100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000...

result:

ok Correct answer with 255 queries.

Test #11:

score: 0
Accepted
time: 2ms
memory: 3680kb

input:

100
11
13
9
11
8
7
15
12
8
8
7
6
9
12
11
9
10
9
11
16
10
8
9
8
10
6
8
9
13
10
9
7
5
11
14
6
11
16
7
7
8
8
11
8
13
15
11
12
11
11
11
9
10
12
10
6
11
10
5
13
9
9
6
6
6
12
7
12
10
10
9
11
7
11
5
6
9
6
5
9
5
16
11
13
13
10
5
5
8
8
12
11
5
8
8
10
8
10
8
10
16
24
18
34
14
42
45
46
50
55
56
58
61
62
63
64
...

output:

? 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
? 0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
? 00100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000...

result:

ok Correct answer with 202 queries.

Test #12:

score: 0
Accepted
time: 3ms
memory: 3792kb

input:

100
5
3
3
4
2
2
2
8
4
5
4
4
2
2
3
4
6
5
1
4
3
3
2
5
5
2
2
4
3
4
4
4
4
1
3
5
3
4
4
3
3
4
1
3
3
2
5
5
5
1
3
4
3
4
2
2
4
2
1
3
3
7
3
5
5
6
6
1
3
2
3
3
3
2
1
6
3
5
5
3
4
4
2
2
1
5
7
3
3
1
6
2
2
5
2
5
3
3
6
4
13
6
11
4
4
11
11
12
3
15
19
3
3
20
22
5
20
20
22
6
21
5
5
3
3
4
5
25
7
6
24
3
5
4
26
29
30
4
3
...

output:

? 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
? 0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
? 00100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000...

result:

ok Correct answer with 264 queries.

Test #13:

score: 0
Accepted
time: 3ms
memory: 3640kb

input:

100
1
1
1
3
1
1
3
1
4
1
2
3
4
1
1
2
4
1
3
2
1
3
2
4
1
3
1
1
2
1
1
1
3
1
1
4
1
1
1
1
4
1
2
1
3
3
1
1
3
4
1
2
2
3
3
1
1
1
1
4
1
1
1
1
1
2
2
2
2
1
2
2
2
2
2
1
1
2
5
1
2
2
1
1
2
2
2
4
1
1
1
5
4
1
3
1
1
1
2
1
5
6
2
2
6
6
7
9
2
4
2
2
4
7
7
2
9
5
7
2
10
7
3
4
5
8
7
4
6
3
3
9
2
10
2
3
5
2
6
7
8
10
7
6
7
3
2...

output:

? 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
? 0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
? 00100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000...

result:

ok Correct answer with 434 queries.

Test #14:

score: 0
Accepted
time: 2ms
memory: 3736kb

input:

100
1
1
2
3
1
3
2
1
1
1
1
1
1
4
1
1
1
2
1
1
2
3
1
1
1
2
1
2
2
2
1
2
1
1
1
4
3
1
1
1
1
2
2
3
2
1
1
1
1
1
1
1
1
5
3
1
1
2
1
1
2
1
2
2
1
2
3
1
1
1
1
1
3
1
1
1
1
1
3
1
1
1
2
2
1
3
3
2
1
4
3
1
2
3
1
1
2
1
2
1
3
2
6
3
6
4
7
2
8
4
6
3
2
2
2
2
8
5
2
2
6
6
5
2
2
7
2
3
2
8
6
2
8
4
3
4
2
5
5
5
2
2
5
5
5
8
5
5
...

output:

? 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
? 0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
? 00100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000...

result:

ok Correct answer with 315 queries.

Test #15:

score: 0
Accepted
time: 0ms
memory: 3908kb

input:

150
4
2
3
2
2
3
2
4
3
3
4
2
2
4
6
1
3
2
3
5
3
4
4
3
6
3
1
2
4
5
5
3
2
3
3
2
3
1
2
4
2
4
4
1
2
3
2
3
1
1
4
4
3
2
2
1
3
3
1
2
1
6
1
3
2
4
1
4
2
1
4
3
4
1
3
4
2
4
2
5
3
4
2
6
6
2
2
2
3
2
4
4
4
2
2
1
2
1
3
2
3
7
2
1
3
2
5
4
1
2
3
2
3
2
3
5
3
4
5
2
3
1
3
1
2
3
1
3
1
2
3
3
2
3
7
1
2
1
4
2
2
2
3
4
4
3
6
3
...

output:

? 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
? 0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000...

result:

ok Correct answer with 472 queries.

Test #16:

score: 0
Accepted
time: 2ms
memory: 3900kb

input:

150
4
2
2
1
2
1
1
8
1
2
1
3
4
2
1
4
3
2
1
4
3
1
1
4
5
3
2
3
3
2
4
1
3
4
4
5
4
2
6
4
2
2
2
2
3
6
2
3
3
4
3
3
2
3
2
4
2
1
1
1
1
2
2
4
2
3
3
3
7
1
4
3
3
3
4
2
2
1
2
2
2
1
2
4
2
1
2
2
4
2
2
4
2
6
2
4
4
2
1
2
4
2
5
1
4
3
3
1
2
4
4
2
2
3
4
1
4
2
2
3
3
3
2
3
2
6
3
3
2
3
1
1
3
5
2
3
2
2
2
3
1
3
3
4
3
3
2
3
...

output:

? 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
? 0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000...

result:

ok Correct answer with 427 queries.

Test #17:

score: 0
Accepted
time: 0ms
memory: 3916kb

input:

150
3
1
4
1
4
2
3
1
1
3
1
1
4
5
7
1
2
1
2
3
4
2
3
5
1
5
1
2
2
5
3
6
2
2
1
3
5
1
3
2
2
3
1
2
1
3
2
2
1
3
2
2
2
5
1
2
2
5
5
2
3
4
1
3
1
2
1
2
2
1
1
5
3
1
3
1
2
3
1
2
2
2
1
4
1
2
2
5
3
2
1
4
2
2
5
1
3
3
1
4
3
2
4
1
5
3
4
2
2
3
1
2
4
3
3
2
1
2
3
1
1
2
1
3
4
3
1
2
4
4
3
1
7
4
1
1
1
1
4
3
2
3
2
2
1
3
3
1
...

output:

? 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
? 0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000...

result:

ok Correct answer with 437 queries.

Test #18:

score: 0
Accepted
time: 3ms
memory: 3860kb

input:

150
4
4
5
4
2
2
5
3
1
4
2
2
3
1
1
2
2
3
3
3
8
2
1
3
2
2
3
1
1
3
2
3
2
3
3
7
1
2
1
5
4
1
4
4
3
2
3
2
5
7
3
2
1
2
1
3
5
3
3
6
3
3
5
3
5
5
1
4
2
5
2
3
2
2
1
3
2
2
2
2
1
3
2
1
2
5
4
3
6
3
2
3
1
2
3
3
1
4
2
2
2
3
4
3
1
5
2
1
5
2
4
6
3
3
2
3
3
2
3
1
5
1
3
2
3
8
2
5
1
4
5
4
1
1
3
1
1
1
5
3
1
3
4
2
3
2
2
4
...

output:

? 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
? 0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000...

result:

ok Correct answer with 411 queries.

Test #19:

score: -100
Runtime Error

input:

150
2
1
1
3
2
2
2
1
1
1
1
1
2
2
2
1
1
3
3
2
2
1
2
1
2
5
4
2
1
2
2
2
2
1
2
1
2
1
2
3
3
2
3
2
1
1
2
2
3
1
2
1
1
3
3
2
4
2
1
1
2
5
2
2
2
2
1
1
3
2
1
3
1
5
3
1
3
1
4
1
2
1
3
1
1
1
3
1
1
2
1
5
3
1
1
1
2
1
2
1
2
1
1
2
2
3
1
2
1
2
2
2
2
2
3
1
5
2
1
2
3
2
1
2
4
1
1
2
3
3
3
1
2
1
3
2
2
1
1
2
2
3
1
1
1
1
4
1
...

output:

? 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
? 0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000...

result: