제출 #1308950

#제출 시각아이디문제언어결과실행 시간메모리
1308950viobowData Transfer (IOI19_transfer)C++17
100 / 100
42 ms1736 KiB
#include "transfer.h"
#include <bits/stdc++.h>
using namespace std;

#define data __data__

int xor_value(const vector<int> &v) {
    int res = 0;
    for (int x : v) res ^= x;
    return res;
}

int xor_index(const vector<int> &v) {
    int res = 0;
    for (int i = 0; i < (int)v.size(); i++)
        if (v[i]) res ^= (i + 1);
    return res;
}

vector<int> get_attachment(vector<int> source) {
    int k;
    if (source.size() == 63) k = 7;
    else k = 9;

    vector<int> send(k);
    send[0] = xor_value(source);

    int source_idx_xor = xor_index(source);
    for (int i = 0; i < k - 1; i++)
        send[i + 1] = (source_idx_xor >> i & 1);
    return send;
}

vector<int> retrieve(vector<int> data) {
    int n, k;
    if (data.size() == 70) n = 63, k = 7;
    else n = 255, k = 9;

    vector<int> res(n);
    for (int i = 0; i < n; i++)
        res[i] = data[i];
    
    int other_xor_idx = 0;
    for (int i = 0; i < k - 1; i++)
        other_xor_idx |= (data[n + 1 + i] << i);
    
    if (xor_value(res) == data[n]) return res;
    else if (xor_index(res) == other_xor_idx) return res;
    else res[(other_xor_idx ^ xor_index(res)) - 1] ^= 1;

    return res;
}

컴파일 시 표준 에러 (stderr) 메시지

grader.cpp: In instantiation of 'void shuffle(std::vector<T>&) [with T = Scenario]':
grader.cpp:200:10:   required from here
grader.cpp:28:23: warning: 'void std::random_shuffle(_RAIter, _RAIter) [with _RAIter = __gnu_cxx::__normal_iterator<Scenario*, vector<Scenario> >]' is deprecated: use 'std::shuffle' instead [-Wdeprecated-declarations]
   28 |         random_shuffle(v.begin(), v.end());
      |         ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/13/algorithm:61,
                 from grader.cpp:8:
/usr/include/c++/13/bits/stl_algo.h:4581:5: note: declared here
 4581 |     random_shuffle(_RandomAccessIterator __first, _RandomAccessIterator __last)
      |     ^~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...