Submission #594691

#TimeUsernameProblemLanguageResultExecution timeMemory
594691BlagojceFlight to the Ford (BOI22_communication)C++17
0 / 100
57 ms1832 KiB
#include <bits/stdc++.h> #define fr(i, n, m) for(int i = (n); i < (m); i ++) #define st first #define nd second #define pb push_back #define pq priority_queue #define all(x) begin(x), end(x) using namespace std; typedef long long ll; typedef long double ld; typedef pair<int,int> pii; #include "communication.h" vector<int> V = {2,2,3,3,2,3,3,3,3,3,2,2,2,2,2,2,2,3,2,3,2,3,3,2,3,3,2,3,3,2,2,3,2,3,2,3,2,2,2,3,2,2,3,2,2,3,2,2,2,3}; //bool aux[250]; /* vector<int> v; int send(int x){ cout<<x<<" SENDED"<<endl; int c; cin >> c; v.pb(c); return c; } int P = 0; int receive(){ cout<<"SEND ME"<<endl; int c; return v[P++]; } */ void encode(int N, int X) { srand(N); int pos = 0; int T = 0; int ASKED = 0; while(pos < 2){ int r_bit = 0; if(X&(1<<pos)) r_bit = 1; int nxt = V[T++]; T = T % ((int)V.size()); ASKED += 1 + nxt; if(ASKED > 250) cout<<2/0<<endl; int t = send(1); if(t == 1){ bool ok = true; fr(i, 0, nxt){ int c = send(r_bit); ok &= (c == r_bit); } if(ok) ++pos; } else{ send(r_bit); fr(i, 0, nxt-1) send(0); ++pos; } } } std::pair<int, int> decode(int N){ srand(N); int pos = 0; int X = 0; int T = 0; int ASKED = 0; while(pos < 2){ int nxt = V[T++]; T = T % ((int)V.size()); ASKED += 1 + nxt; if(ASKED > 250) cout<<2/0<<endl; int t = receive(); if(t == 1){ int sum = 0; fr(i, 0, nxt){ sum += receive(); } if(sum == 0) ++pos; else if(sum == nxt){ X |= (1<<pos); ++pos; } } else{ if(receive() == 1) X |= (1<<pos); fr(i, 0, nxt-1){ receive(); } ++pos; } } //cout<<X<<endl; return {X, 2}; }/* int main(){ encode(10, 1); decode(10); } */

Compilation message (stderr)

communication.cpp: In function 'void encode(int, int)':
communication.cpp:51:26: warning: division by zero [-Wdiv-by-zero]
   51 |   if(ASKED > 250) cout<<2/0<<endl;
      |                         ~^~
communication.cpp: In function 'std::pair<int, int> decode(int)':
communication.cpp:85:26: warning: division by zero [-Wdiv-by-zero]
   85 |   if(ASKED > 250) cout<<2/0<<endl;
      |                         ~^~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...