Submission #679277

#TimeUsernameProblemLanguageResultExecution timeMemory
679277phoebeData Transfer (IOI19_transfer)C++17
100 / 100
234 ms2668 KiB
#include "transfer.h" #include <bits/stdc++.h> using namespace std; vector<int> get_attachment(vector<int> source){ source.push_back(0); vector<int> re; for (int i = 1; i <= source.size(); i *= 2){ int bruh = 0; int j = 0; while (j < source.size()){ for (int k = 0; k < i; k++){ bruh ^= source[j++]; } j += i; } re.push_back(bruh); } return re; } vector<int> retrieve(vector<int> data){ int sz = (data.size() == 63 + 7 ? 64 : 256); int x = 0; vector<int> re; for (int i = 0; i < sz - 1; i++){ x ^= data[i]; re.push_back(data[i]); } if (x == data.back()){ return re; } re.push_back(0); int l = 0, r = sz, left_expected = data[data.size() - 2], idx = data.size() - 2; for (int k = sz / 2; k >= 1; k /= 2){ // cout << l << ' ' << r << endl; int mid = (l + r) / 2; // [l, mid), [mid, r) int left = 0; for (int i = l; i < mid; i++) left ^= data[i]; if (left == left_expected){ // not in range [l, mid) // cout << left << endl; l = mid; } else{ // not in range [mid, r) r = mid; } left_expected = data[--idx]; if (k == 1) break; int j = 0; while (j < sz){ for (int i = 0; i < k / 2; i++){ if (j >= l && j < r) continue; left_expected ^= data[j++]; } j += k / 2; } } // cout << endl << l << ' ' << r << endl; // for (auto x : re) cout << x; cout << endl; re[l] ^= 1; re.pop_back(); return re; }

Compilation message (stderr)

transfer.cpp: In function 'std::vector<int> get_attachment(std::vector<int>)':
transfer.cpp:8:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    8 |     for (int i = 1; i <= source.size(); i *= 2){
      |                     ~~^~~~~~~~~~~~~~~~
transfer.cpp:11:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   11 |         while (j < source.size()){
      |                ~~^~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...