답안 #441612

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
441612 2021-07-05T14:44:08 Z leaked Xoractive (IZhO19_xoractive) C++14
100 / 100
7 ms 384 KB
#include "interactive.h"
#include <bits/stdc++.h>
#define vec vector
#define pb push_back
#define f first
#define s second
#define sz(x) (int)x.size()
using namespace std;
const int N=1e2;
int f;
//vec<int>produce
vec<int> del(vec<int> &a,vec<int> &b,int w){
    map<int,int>mp;
    vec<int>c;
    for(auto &z : b) mp[z]--;
    for(auto &z : a) mp[z]++;
    if(w)mp[0]--;
    for(auto &z : mp){
        int x=z.s/((w?2:1));
        while(x--){
            if(w) c.pb(z.f^f);
            else c.pb(z.f);
        }
    }
    sort(c.begin(),c.end());
    return c;
}
vec<int> get(vec<int> inds){
    if(!sz(inds)) return vec<int>();
    for(auto &z : inds) z++;
    map<int,int>mp;
    vec<int>a=inds,b=inds,c;
    b.pb(1);
    a=get_pairwise_xor(a),b=get_pairwise_xor(b);
    return del(b,a,1);
}
vec<int>have[7],nothave[7];
void era(vec<int> &a,int x){
    int j=-1;
    for(int i=0;i<sz(a);i++){
        if(x==a[i])j=i;
    }
    assert(j!=-1);
    a.erase(a.begin()+j,a.begin()+j+1);
}
vec<int>all;
int m;
int answ[N];
map<int,int>fck;
void rec(int st){
    if(st>=7)return;
    vec<int>vc;
    for(int i=0;i<m;i++){
        if((1<<st)&i) vc.pb(i);
    }
    have[st]=get(vc);
    for(auto &z : have[st]) fck[z]++;
//    nothave[st]=del(all,have[st],0);
    rec(st+1);
}
vector<int> guess(int n) {
	vector <int> ans;
	m=n;
    f=ask(1);
    all.pb(f);
    rec(0);
    for(auto &z : fck) all.pb(z.f);
    for(int i=0;i<7;i++){
        nothave[i]=del(all,have[i],0);
    }
    for(int i=0;i<=m;i++){
        map<int,int>mp;
        for(int st=0;st<7;st++){
            if((1<<st)&i){
                for(auto &z : have[st]){
                    if(mp[z]==st) mp[z]++;
                }
            }
            else{
                for(auto &z : nothave[st]){
                    if(mp[z]==st) mp[z]++;
                }
            }
        }
        for(auto &z : mp){
            if(z.s==7){
                ///it will be good
                int x=z.f;
                answ[i]=x;
                for(int st=0;st<7;st++){
                    if((1<<st)&i){
                        era(have[st],x);
                    }
                    else{
                        era(nothave[st],x);
                    }
                }
            }
        }
    }
    ans.pb(f);
    for(int i=1;i<m;i++){
        ans.pb(answ[i]);
    }
	return ans;
}
/*
13
12 99 65 42 6 27 100 45 57 1 34 6 9
*/
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 200 KB Output is correct
2 Correct 0 ms 200 KB Output is correct
3 Correct 0 ms 200 KB Output is correct
4 Correct 0 ms 200 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 5 ms 328 KB Output is correct
2 Correct 5 ms 328 KB Output is correct
3 Correct 4 ms 328 KB Output is correct
4 Correct 5 ms 328 KB Output is correct
5 Correct 6 ms 328 KB Output is correct
6 Correct 5 ms 328 KB Output is correct
7 Correct 4 ms 328 KB Output is correct
8 Correct 5 ms 328 KB Output is correct
9 Correct 5 ms 328 KB Output is correct
10 Correct 5 ms 328 KB Output is correct
11 Correct 4 ms 328 KB Output is correct
12 Correct 5 ms 328 KB Output is correct
13 Correct 5 ms 328 KB Output is correct
14 Correct 5 ms 328 KB Output is correct
15 Correct 4 ms 328 KB Output is correct
16 Correct 5 ms 328 KB Output is correct
17 Correct 5 ms 328 KB Output is correct
18 Correct 6 ms 380 KB Output is correct
19 Correct 4 ms 328 KB Output is correct
20 Correct 5 ms 328 KB Output is correct
21 Correct 5 ms 328 KB Output is correct
22 Correct 5 ms 328 KB Output is correct
23 Correct 4 ms 328 KB Output is correct
24 Correct 5 ms 328 KB Output is correct
25 Correct 5 ms 328 KB Output is correct
26 Correct 5 ms 328 KB Output is correct
27 Correct 4 ms 348 KB Output is correct
28 Correct 5 ms 328 KB Output is correct
29 Correct 5 ms 328 KB Output is correct
30 Correct 5 ms 328 KB Output is correct
31 Correct 4 ms 328 KB Output is correct
32 Correct 5 ms 328 KB Output is correct
33 Correct 5 ms 328 KB Output is correct
34 Correct 5 ms 328 KB Output is correct
35 Correct 4 ms 328 KB Output is correct
36 Correct 5 ms 328 KB Output is correct
37 Correct 5 ms 328 KB Output is correct
38 Correct 5 ms 328 KB Output is correct
39 Correct 4 ms 328 KB Output is correct
40 Correct 5 ms 376 KB Output is correct
41 Correct 5 ms 328 KB Output is correct
42 Correct 5 ms 380 KB Output is correct
43 Correct 4 ms 328 KB Output is correct
44 Correct 5 ms 328 KB Output is correct
45 Correct 5 ms 328 KB Output is correct
46 Correct 5 ms 328 KB Output is correct
47 Correct 4 ms 328 KB Output is correct
48 Correct 5 ms 328 KB Output is correct
49 Correct 5 ms 328 KB Output is correct
50 Correct 5 ms 328 KB Output is correct
51 Correct 4 ms 328 KB Output is correct
52 Correct 5 ms 384 KB Output is correct
53 Correct 5 ms 328 KB Output is correct
54 Correct 5 ms 328 KB Output is correct
55 Correct 4 ms 328 KB Output is correct
56 Correct 5 ms 328 KB Output is correct
57 Correct 5 ms 328 KB Output is correct
58 Correct 5 ms 328 KB Output is correct
59 Correct 4 ms 328 KB Output is correct
60 Correct 5 ms 328 KB Output is correct
61 Correct 6 ms 328 KB Output is correct
62 Correct 6 ms 328 KB Output is correct
63 Correct 5 ms 328 KB Output is correct
64 Correct 5 ms 328 KB Output is correct
65 Correct 5 ms 328 KB Output is correct
66 Correct 5 ms 328 KB Output is correct
67 Correct 4 ms 328 KB Output is correct
68 Correct 5 ms 328 KB Output is correct
69 Correct 6 ms 328 KB Output is correct
70 Correct 5 ms 328 KB Output is correct
71 Correct 4 ms 328 KB Output is correct
72 Correct 5 ms 328 KB Output is correct
73 Correct 5 ms 328 KB Output is correct
74 Correct 5 ms 328 KB Output is correct
75 Correct 4 ms 328 KB Output is correct
76 Correct 5 ms 328 KB Output is correct
77 Correct 5 ms 328 KB Output is correct
78 Correct 5 ms 328 KB Output is correct
79 Correct 4 ms 328 KB Output is correct
80 Correct 5 ms 328 KB Output is correct
81 Correct 5 ms 328 KB Output is correct
82 Correct 5 ms 328 KB Output is correct
83 Correct 4 ms 328 KB Output is correct
84 Correct 5 ms 328 KB Output is correct
85 Correct 5 ms 328 KB Output is correct
86 Correct 5 ms 328 KB Output is correct
87 Correct 4 ms 328 KB Output is correct
88 Correct 5 ms 328 KB Output is correct
89 Correct 5 ms 328 KB Output is correct
90 Correct 7 ms 380 KB Output is correct
91 Correct 4 ms 328 KB Output is correct
92 Correct 5 ms 328 KB Output is correct
93 Correct 5 ms 380 KB Output is correct
94 Correct 5 ms 328 KB Output is correct
95 Correct 4 ms 328 KB Output is correct
96 Correct 5 ms 328 KB Output is correct
97 Correct 5 ms 328 KB Output is correct
98 Correct 5 ms 328 KB Output is correct
99 Correct 4 ms 328 KB Output is correct
100 Correct 5 ms 328 KB Output is correct