Submission #256399

# Submission time Handle Problem Language Result Execution time Memory
256399 2020-08-02T16:12:23 Z karma Xoractive (IZhO19_xoractive) C++14
100 / 100
6 ms 512 KB
#include <bits/stdc++.h>
#include "interactive.h"
#define pb          emplace_back
#define ll          long long
#define fi          first
#define se          second
#define mp          make_pair
//#define int         int64_t

using namespace std;
const int N = 107;

int ans[N];
//
//vector<int> get_pairwise_xor(vector<int> pos) {
//    vector<int> res;
//    cout << "ask: ";
//    for(int x: pos) cout << x << ' ';
//    cout << "\n"; cout << "answer: ";
//    for(int x: pos) {
//        for(int y: pos) {
//            res.pb(ans[x] ^ ans[y]);
//            cout << (ans[x] ^ ans[y]) << ' ';
//        }
//    }
//    cout << '\n';
//    return res;
//}
//
//int ask(int i) {return ans[i];}

vector<int> get_xor(vector<int>& pos) {
    auto tmp = get_pairwise_xor(pos);
    sort(tmp.begin(), tmp.end());
    vector<int> ans;
    for(int i = 0; i < tmp.size(); i += 2) {
        if(tmp[i] == 0) continue;
        ans.pb(tmp[i]);
    }
    return ans;
}

set<int> get_ans(int cur, vector<int>& pos) {
    auto tmp1 = get_xor(pos);
    pos.pb(1);
    auto tmp2 = get_xor(pos);
    set<int> res;
    map<int, int> cnt;
    for(auto x: tmp2) ++cnt[x];
    for(auto x: tmp1) --cnt[x];
    for(auto x: cnt)
        if(x.se)
            res.insert(x.fi ^ cur);
    return res;
}

set<int> value[10];

vector<int> guess(int n) {
    vector<int> res(n), pos;
    if(n <= 10) {
        for(int i = 0; i < n; ++i) res[i] = ask(i + 1);
        return res;
    }
    res[0] = ask(1);
    for(int i = 0; i < 7; ++i) {
        pos.clear();
        for(int j = 1; j < n; ++j)
            if(j >> i & 1) pos.pb(j + 1);
        value[i] = get_ans(res[0], pos);
        //cout << i << '\n';
        //for(int x: value[i]) cout << x << ' ';
        //cout << '\n';
    }
    set<int> can;
    for(int j = n - 1; j > 0; --j) {
        bool start = 0; can.clear();
        for(int i = 0; i < 7; ++i) {
            if(j >> i & 1) {
                if(!start) can = value[i], start = 1;
                else {
                    //for(int x: can) cout << x << ' ';
                    //cout << '\n';
                    vector<int> del;
                    for(int x: can)
                        if(!value[i].count(x)) del.pb(x);
                    for(int x: del) can.erase(x);
                }
            }
        }
        res[j] = *can.begin();
        for(int i = 0; i < 7; ++i)
            if(j >> i & 1) value[i].erase(res[j]);
    }
    return res;
}

//int32_t main() {
//    ios_base::sync_with_stdio(0);
//    cin.tie(0), cout.tie(0);
//    #define Task        "test"
//    if(fopen(Task".inp", "r")) {
//        freopen(Task".inp", "r", stdin);
//        freopen(Task".out", "w", stdout);
//    }
//    int n; cin >> n;
//    for(int i = 1; i <= n; ++i) cin >> ans[i];
//    auto res = guess(n);
//    for(int x: res) cout << x << ' ';
//}

Compilation message

Xoractive.cpp: In function 'std::vector<int> get_xor(std::vector<int>&)':
Xoractive.cpp:36:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i = 0; i < tmp.size(); i += 2) {
                    ~~^~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 1 ms 384 KB Output is correct
2 Correct 0 ms 256 KB Output is correct
3 Correct 0 ms 256 KB Output is correct
4 Correct 1 ms 256 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 4 ms 384 KB Output is correct
2 Correct 4 ms 384 KB Output is correct
3 Correct 3 ms 384 KB Output is correct
4 Correct 4 ms 384 KB Output is correct
5 Correct 5 ms 384 KB Output is correct
6 Correct 4 ms 384 KB Output is correct
7 Correct 3 ms 384 KB Output is correct
8 Correct 6 ms 384 KB Output is correct
9 Correct 4 ms 384 KB Output is correct
10 Correct 4 ms 384 KB Output is correct
11 Correct 3 ms 384 KB Output is correct
12 Correct 4 ms 384 KB Output is correct
13 Correct 4 ms 384 KB Output is correct
14 Correct 5 ms 384 KB Output is correct
15 Correct 4 ms 384 KB Output is correct
16 Correct 5 ms 384 KB Output is correct
17 Correct 4 ms 384 KB Output is correct
18 Correct 4 ms 384 KB Output is correct
19 Correct 3 ms 384 KB Output is correct
20 Correct 4 ms 384 KB Output is correct
21 Correct 5 ms 384 KB Output is correct
22 Correct 4 ms 384 KB Output is correct
23 Correct 4 ms 384 KB Output is correct
24 Correct 4 ms 384 KB Output is correct
25 Correct 4 ms 384 KB Output is correct
26 Correct 4 ms 384 KB Output is correct
27 Correct 3 ms 384 KB Output is correct
28 Correct 4 ms 384 KB Output is correct
29 Correct 4 ms 384 KB Output is correct
30 Correct 4 ms 384 KB Output is correct
31 Correct 4 ms 384 KB Output is correct
32 Correct 4 ms 384 KB Output is correct
33 Correct 4 ms 384 KB Output is correct
34 Correct 4 ms 384 KB Output is correct
35 Correct 4 ms 384 KB Output is correct
36 Correct 4 ms 384 KB Output is correct
37 Correct 4 ms 384 KB Output is correct
38 Correct 4 ms 384 KB Output is correct
39 Correct 3 ms 384 KB Output is correct
40 Correct 4 ms 384 KB Output is correct
41 Correct 4 ms 384 KB Output is correct
42 Correct 4 ms 384 KB Output is correct
43 Correct 3 ms 384 KB Output is correct
44 Correct 5 ms 512 KB Output is correct
45 Correct 4 ms 384 KB Output is correct
46 Correct 4 ms 384 KB Output is correct
47 Correct 3 ms 384 KB Output is correct
48 Correct 4 ms 384 KB Output is correct
49 Correct 5 ms 384 KB Output is correct
50 Correct 4 ms 384 KB Output is correct
51 Correct 3 ms 384 KB Output is correct
52 Correct 4 ms 384 KB Output is correct
53 Correct 4 ms 384 KB Output is correct
54 Correct 4 ms 384 KB Output is correct
55 Correct 3 ms 384 KB Output is correct
56 Correct 4 ms 384 KB Output is correct
57 Correct 4 ms 384 KB Output is correct
58 Correct 4 ms 384 KB Output is correct
59 Correct 3 ms 384 KB Output is correct
60 Correct 4 ms 384 KB Output is correct
61 Correct 4 ms 384 KB Output is correct
62 Correct 5 ms 384 KB Output is correct
63 Correct 4 ms 384 KB Output is correct
64 Correct 4 ms 384 KB Output is correct
65 Correct 4 ms 384 KB Output is correct
66 Correct 4 ms 384 KB Output is correct
67 Correct 3 ms 384 KB Output is correct
68 Correct 4 ms 384 KB Output is correct
69 Correct 4 ms 384 KB Output is correct
70 Correct 4 ms 384 KB Output is correct
71 Correct 4 ms 384 KB Output is correct
72 Correct 4 ms 384 KB Output is correct
73 Correct 5 ms 384 KB Output is correct
74 Correct 4 ms 384 KB Output is correct
75 Correct 3 ms 384 KB Output is correct
76 Correct 4 ms 384 KB Output is correct
77 Correct 4 ms 384 KB Output is correct
78 Correct 4 ms 384 KB Output is correct
79 Correct 3 ms 384 KB Output is correct
80 Correct 4 ms 384 KB Output is correct
81 Correct 4 ms 384 KB Output is correct
82 Correct 4 ms 384 KB Output is correct
83 Correct 3 ms 384 KB Output is correct
84 Correct 4 ms 384 KB Output is correct
85 Correct 4 ms 384 KB Output is correct
86 Correct 4 ms 384 KB Output is correct
87 Correct 3 ms 384 KB Output is correct
88 Correct 4 ms 384 KB Output is correct
89 Correct 4 ms 384 KB Output is correct
90 Correct 4 ms 384 KB Output is correct
91 Correct 3 ms 384 KB Output is correct
92 Correct 4 ms 384 KB Output is correct
93 Correct 4 ms 384 KB Output is correct
94 Correct 4 ms 384 KB Output is correct
95 Correct 3 ms 384 KB Output is correct
96 Correct 4 ms 384 KB Output is correct
97 Correct 4 ms 384 KB Output is correct
98 Correct 4 ms 384 KB Output is correct
99 Correct 3 ms 384 KB Output is correct
100 Correct 4 ms 384 KB Output is correct