답안 #519224

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
519224 2022-01-26T04:01:14 Z Ai7081 Xoractive (IZhO19_xoractive) C++17
0 / 100
1 ms 456 KB
#include <bits/stdc++.h>
using namespace std;

int ask(int i);

vector<int> get_pairwise_xor(vector<int> pos);

vector<int> guess(int n) {
    vector<int> ret(n);
    ret[0] = ask(1);
    vector<int> q;
    vector<vector<int>> bit(7);
    for (int i=0; i<7; i++) {
        q.clear();
        for (int j=1; j<=n; j++) {
            if ((j>>i)%2 && j>1) q.push_back(j);
        }
        if (q.empty()) break;
        vector<int> res1, res2;
        res1 = get_pairwise_xor(q);
        q.push_back(1);
        res2 = get_pairwise_xor(q);
        vector<bool> mark(n+5, false);
        int ii=0, jj=0;
        while (ii<res1.size() && jj<res2.size()) {
            if (res1[ii] < res2[jj]) ii++;
            else if (res1[ii] > res2[jj]) jj++;
            else {
                mark[jj] = true;
                ii++;
                jj++;
            }
        }
        for (int j=0; j<res2.size(); j++) {
            if (!mark[j]) bit[i].push_back(res2[j]);
        }
        for (int j=0; j<bit[i].size(); j++) bit[i][j] = (bit[i][j] ^ ret[0]);
    }
    vector<pair<int, int>> v;
    for (int i=0; i<7; i++) {
        for (auto x : bit[i]) {
            bool ok = false;
            for (int j=0; j<v.size(); j++) {
                if (x == v[j].first) {
                    v[j].second += (1<<i);
                    ok = true;
                    break;
                }
            }
            if (!ok) {
                v.push_back({x, (1<<i)});
            }
        }
    }
    for (auto [x, idx] : v) ret[idx-1] = x;
    return ret;
}

Compilation message

Xoractive.cpp: In function 'std::vector<int> guess(int)':
Xoractive.cpp:25:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   25 |         while (ii<res1.size() && jj<res2.size()) {
      |                ~~^~~~~~~~~~~~
Xoractive.cpp:25:36: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   25 |         while (ii<res1.size() && jj<res2.size()) {
      |                                  ~~^~~~~~~~~~~~
Xoractive.cpp:34:24: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   34 |         for (int j=0; j<res2.size(); j++) {
      |                       ~^~~~~~~~~~~~
Xoractive.cpp:37:24: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   37 |         for (int j=0; j<bit[i].size(); j++) bit[i][j] = (bit[i][j] ^ ret[0]);
      |                       ~^~~~~~~~~~~~~~
Xoractive.cpp:43:28: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   43 |             for (int j=0; j<v.size(); j++) {
      |                           ~^~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Runtime error 1 ms 328 KB Execution killed with signal 6
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 1 ms 456 KB Execution killed with signal 11
2 Halted 0 ms 0 KB -