Submission #1190091

#TimeUsernameProblemLanguageResultExecution timeMemory
1190091epicci23Message (IOI24_message)C++20
Compilation error
0 ms0 KiB
#include "bits/stdc++.h" #include "message.h" //#define int long long #define all(v) v.begin() , v.end() #define sz(a) (int)a.size() using namespace std; bool cogunluk(vector<bool> cur){ int hm1 = count(all(cur), 1); int hm0 = count(all(cur), 0); if(hm0 > hm1) return 0; return 1; } void send_message(vector<bool> M, vector<bool> C) { vector<bool> A(31, 0); // ilk 20 biti ogret int xd = 0; for(int i = 0; i < 20; i++){ if(C[i] == 0){ A.assign(31, 0); xd++; } else A.assign(31, 1); send_packet(A); } // geriye kalanlari binary jump ile ogret ??? TODO // 21 ile 30 arasini ogret // 31.yi otomatik ogrenecek zaten int ptr = 20; for(int i = 0; i < (10 + xd - 1) / xd; i++){ A.assign(31, 0); for(int j = 0; j < 20; j++){ if(C[j] == 0 && ptr < 31){ A[j] = C[ptr++]; } } send_packet(A); } // uzunlugu ogret reverse(all(M)); int k = sz(M); for(int i = 10; i >= 0; i--){ if(k>>i&1) M.push_back(1); else M.push_back(0); } reverse(all(M)); k = sz(M); // mesaji ogret int ptr = 0; for(int i = 0; i < (k + 15) / 16; i++){ A.assign(31, 0); for(int j = 0; j < 31; j++){ if(C[j] == 0 && ptr < k) A[j] = M[ptr++]; } send_packet(A); } } vector<bool> receive_message(vector<vector<bool>> R){ vector<bool> C(31, 0); int kac0 = 0; for(int i = 0; i < 20; i++){ // gercek info veren bitleri ogren C[i] = cogunluk(R[i]); if(!C[i]) kac0++; } int ptr = 20; for(int i = 20; i < 20 + (10 + kac0 - 1) / kac0; i++){ for(int j = 0; j < 20; j++){ if(C[j] == 0 && ptr < 31){ C[ptr++] = R[i][j]; } } } if(ptr < 31 && kac0 == 15) C[ptr++] = 0; else if(ptr < 31) C[ptr++] = 1; vector<bool> res; int ilk_10 = 0, uz = 0; for(int i = 30; i < sz(R); i++){ for(int j = 0; j < 31; j++){ if(C[j] == 1) continue; if(ilk_10 <= 10){ if(R[i][j]) uz += (1<<ilk_10); ilk_10++; } else{ if(sz(res) < uz) res.push_back(R[i][j]); } } } return res; } /*void _(){ } int32_t main(){ cin.tie(0); ios::sync_with_stdio(0); int tc=1;//cin >> tc; while(tc--) _(); return 0; }*/

Compilation message (stderr)

message.cpp: In function 'void send_message(std::vector<bool>, std::vector<bool>)':
message.cpp:55:7: error: redeclaration of 'int ptr'
   55 |   int ptr = 0;
      |       ^~~
message.cpp:32:7: note: 'int ptr' previously declared here
   32 |   int ptr = 20;
      |       ^~~