Submission #258879

#TimeUsernameProblemLanguageResultExecution timeMemory
258879mjkocijanData Transfer (IOI19_transfer)C++14
100 / 100
447 ms2680 KiB
#include "transfer.h" #define pb push_back #include <bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<ll, ll> ii; #define X first #define Y second vector<int> v; int k; std::vector<int> get_attachment(std::vector<int> source) { if (source.size() == 63) { k = 7; } else { k = 9; } v = vector<int>(k); for (int i = 0; i < source.size(); i++) { if (source[i]) { for (int j = 0; j < v.size(); j++) { if ((i + 1) & (1 << j)) { v[j] ^= 1; } } v[k - 1] ^= 1; } } return v; } vector<int> ret; std::vector<int> retrieve(std::vector<int> data) { int n; if (data.size() == 70) { n = 63; k = 7; v = vector<int>(7); } else { n = 255; k = 9; v = vector<int>(9); } for (int i = 0; i < n; i++) { if (data[i]) { for (int j = 0; j < k; j++) { if ((i + 1) & (1 << j)) { v[j] ^= 1; } } v[k - 1] ^= 1; } } int r = 0; for (int i = 0; i < k - 1; i++) { if (data[n + i] != v[i]) { r |= (1 << i); } } if (r && v[k - 1] != data[n + k - 1]) data[r - 1] ^= 1; //ret = std::vector<int>(data.begin(), data.end()-k); //for (int i: ret) cout << i;cout<<endl; //return ret; return vector<int>(data.begin(), data.end()-k); }

Compilation message (stderr)

transfer.cpp: In function 'std::vector<int> get_attachment(std::vector<int>)':
transfer.cpp:21:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for (int i = 0; i < source.size(); i++) {
                  ~~^~~~~~~~~~~~~~~
transfer.cpp:23:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
    for (int j = 0; j < v.size(); j++) {
                    ~~^~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...