답안 #381085

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
381085 2021-03-24T13:12:50 Z mohamedsobhi777 Xoractive (IZhO19_xoractive) C++14
88 / 100
11 ms 1020 KB
#include <bits/stdc++.h>
#include "interactive.h"

using namespace std;

int a0;

struct state
{
       int l, r;
       vector<int> lhs, rhs, mems;
       state(int l, int r) : l(l), r(r) {}
};

vector<int> get_all(vector<int> v)
{
       vector<int> ret = get_pairwise_xor(v);
       for (auto u : v)
              assert(u != 1);
       v.push_back(1);
       vector<int> ret2 = get_pairwise_xor(v);
       sort(ret.begin(), ret.end());
       sort(ret2.begin(), ret2.end());
       multiset<int> mu;
       vector<int> ret3;
       for (auto u : ret2)
              mu.insert(u);
       for (auto u : ret)
              mu.erase(mu.find(u));
       for (auto u : mu)
              if (u)
                     ret3.push_back(u ^ a0);
       sort(ret3.begin(), ret3.end());
       ret3.erase(unique(ret3.begin(), ret3.end()), ret3.end());
       return ret3;
}

vector<int> guess(int n)
{
       vector<int> ans;
       a0 = ask(1);
       ans.resize(n - 1);
       iota(ans.begin(), ans.end(), 2);
       ans = get_all(ans);

       vector<state> stt;
       stt.push_back(state(1, n));
       ans.push_back(a0);
       stt.back().mems = ans;

       while (stt.size())
       {
              bool flag = 1;
              vector<int> lhs, rhs;
              vector<state> stt2;

              for (auto u : stt)
              {
                     if (u.l != u.r)
                            flag = 0;
                     if (u.l == u.r)
                     {
                            stt2.push_back(u);
                            continue;
                     }
                     int mid = (u.l + u.r) >> 1;
                     for (int j = mid + 1; j <= u.r; ++j)
                            rhs.push_back(j);
                     stt2.push_back(state(u.l, mid));
                     stt2.push_back(state(mid + 1, u.r));
              }
              rhs = get_all(rhs);
              sort(rhs.begin(), rhs.end());
              auto isR = [&](int x) -> bool {
                     if (binary_search(rhs.begin(), rhs.end(), x))
                            return 1;
                     return 0;
              };
              int j = 0;
              for (int i = 0; i < stt.size(); ++i)
              {
                     if (stt[i].l == stt[i].r)
                     {
                            ++j;
                     }
                     else
                     {
                            for (auto u : stt[i].mems)
                            {
                                   if (isR(u))
                                          stt2[j + 1].mems.push_back(u);
                                   else
                                          stt2[j].mems.push_back(u);
                            }
                            j += 2;
                     }
              }
              stt = stt2;
              if (stt.size() == n)
                     break;
       }

       ans.clear();
       for (auto u : stt)
              ans.push_back(u.mems.back());
       return ans;
}

Compilation message

Xoractive.cpp: In function 'std::vector<int> guess(int)':
Xoractive.cpp:80:33: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<state>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   80 |               for (int i = 0; i < stt.size(); ++i)
      |                               ~~^~~~~~~~~~~~
Xoractive.cpp:99:30: warning: comparison of integer expressions of different signedness: 'std::vector<state>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   99 |               if (stt.size() == n)
      |                   ~~~~~~~~~~~^~~~
Xoractive.cpp:53:20: warning: variable 'flag' set but not used [-Wunused-but-set-variable]
   53 |               bool flag = 1;
      |                    ^~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 364 KB Output is correct
2 Correct 1 ms 364 KB Output is correct
3 Correct 1 ms 364 KB Output is correct
4 Correct 1 ms 364 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Partially correct 9 ms 876 KB Output is partially correct
2 Partially correct 8 ms 876 KB Output is partially correct
3 Partially correct 8 ms 876 KB Output is partially correct
4 Partially correct 8 ms 876 KB Output is partially correct
5 Partially correct 8 ms 876 KB Output is partially correct
6 Partially correct 8 ms 876 KB Output is partially correct
7 Partially correct 8 ms 876 KB Output is partially correct
8 Partially correct 8 ms 876 KB Output is partially correct
9 Partially correct 9 ms 876 KB Output is partially correct
10 Partially correct 8 ms 876 KB Output is partially correct
11 Partially correct 8 ms 876 KB Output is partially correct
12 Partially correct 9 ms 876 KB Output is partially correct
13 Partially correct 8 ms 876 KB Output is partially correct
14 Partially correct 8 ms 876 KB Output is partially correct
15 Partially correct 8 ms 876 KB Output is partially correct
16 Partially correct 9 ms 876 KB Output is partially correct
17 Partially correct 8 ms 876 KB Output is partially correct
18 Partially correct 8 ms 876 KB Output is partially correct
19 Partially correct 8 ms 876 KB Output is partially correct
20 Partially correct 8 ms 876 KB Output is partially correct
21 Partially correct 9 ms 876 KB Output is partially correct
22 Partially correct 9 ms 876 KB Output is partially correct
23 Partially correct 8 ms 876 KB Output is partially correct
24 Partially correct 9 ms 876 KB Output is partially correct
25 Partially correct 8 ms 876 KB Output is partially correct
26 Partially correct 8 ms 876 KB Output is partially correct
27 Partially correct 8 ms 876 KB Output is partially correct
28 Partially correct 8 ms 876 KB Output is partially correct
29 Partially correct 8 ms 876 KB Output is partially correct
30 Partially correct 8 ms 876 KB Output is partially correct
31 Partially correct 8 ms 876 KB Output is partially correct
32 Partially correct 8 ms 876 KB Output is partially correct
33 Partially correct 8 ms 876 KB Output is partially correct
34 Partially correct 9 ms 876 KB Output is partially correct
35 Partially correct 8 ms 876 KB Output is partially correct
36 Partially correct 9 ms 876 KB Output is partially correct
37 Partially correct 8 ms 876 KB Output is partially correct
38 Partially correct 8 ms 876 KB Output is partially correct
39 Partially correct 8 ms 876 KB Output is partially correct
40 Partially correct 8 ms 876 KB Output is partially correct
41 Partially correct 8 ms 876 KB Output is partially correct
42 Partially correct 9 ms 876 KB Output is partially correct
43 Partially correct 8 ms 876 KB Output is partially correct
44 Partially correct 8 ms 876 KB Output is partially correct
45 Partially correct 9 ms 876 KB Output is partially correct
46 Partially correct 8 ms 876 KB Output is partially correct
47 Partially correct 8 ms 876 KB Output is partially correct
48 Partially correct 8 ms 876 KB Output is partially correct
49 Partially correct 8 ms 876 KB Output is partially correct
50 Partially correct 8 ms 876 KB Output is partially correct
51 Partially correct 8 ms 876 KB Output is partially correct
52 Partially correct 8 ms 876 KB Output is partially correct
53 Partially correct 8 ms 876 KB Output is partially correct
54 Partially correct 9 ms 876 KB Output is partially correct
55 Partially correct 8 ms 876 KB Output is partially correct
56 Partially correct 11 ms 876 KB Output is partially correct
57 Partially correct 9 ms 876 KB Output is partially correct
58 Partially correct 8 ms 876 KB Output is partially correct
59 Partially correct 8 ms 876 KB Output is partially correct
60 Partially correct 8 ms 876 KB Output is partially correct
61 Partially correct 11 ms 896 KB Output is partially correct
62 Partially correct 9 ms 876 KB Output is partially correct
63 Partially correct 8 ms 876 KB Output is partially correct
64 Partially correct 8 ms 876 KB Output is partially correct
65 Partially correct 9 ms 876 KB Output is partially correct
66 Partially correct 8 ms 876 KB Output is partially correct
67 Partially correct 8 ms 876 KB Output is partially correct
68 Partially correct 8 ms 876 KB Output is partially correct
69 Partially correct 8 ms 876 KB Output is partially correct
70 Partially correct 8 ms 876 KB Output is partially correct
71 Partially correct 8 ms 876 KB Output is partially correct
72 Partially correct 8 ms 876 KB Output is partially correct
73 Partially correct 11 ms 876 KB Output is partially correct
74 Partially correct 8 ms 876 KB Output is partially correct
75 Partially correct 8 ms 876 KB Output is partially correct
76 Partially correct 9 ms 876 KB Output is partially correct
77 Partially correct 8 ms 876 KB Output is partially correct
78 Partially correct 8 ms 876 KB Output is partially correct
79 Partially correct 7 ms 876 KB Output is partially correct
80 Partially correct 8 ms 876 KB Output is partially correct
81 Partially correct 8 ms 876 KB Output is partially correct
82 Partially correct 8 ms 876 KB Output is partially correct
83 Partially correct 7 ms 876 KB Output is partially correct
84 Partially correct 11 ms 876 KB Output is partially correct
85 Partially correct 8 ms 876 KB Output is partially correct
86 Partially correct 9 ms 1020 KB Output is partially correct
87 Partially correct 8 ms 876 KB Output is partially correct
88 Partially correct 8 ms 876 KB Output is partially correct
89 Partially correct 8 ms 876 KB Output is partially correct
90 Partially correct 8 ms 876 KB Output is partially correct
91 Partially correct 10 ms 876 KB Output is partially correct
92 Partially correct 8 ms 876 KB Output is partially correct
93 Partially correct 8 ms 876 KB Output is partially correct
94 Partially correct 11 ms 876 KB Output is partially correct
95 Partially correct 7 ms 876 KB Output is partially correct
96 Partially correct 8 ms 876 KB Output is partially correct
97 Partially correct 8 ms 876 KB Output is partially correct
98 Partially correct 8 ms 876 KB Output is partially correct
99 Partially correct 8 ms 876 KB Output is partially correct
100 Partially correct 9 ms 876 KB Output is partially correct