Submission #1205184

#TimeUsernameProblemLanguageResultExecution timeMemory
1205184dostsHow to Avoid Disqualification in 75 Easy Steps (CEOI23_avoid)C++20
25 / 100
1 ms424 KiB
#include <bits/stdc++.h> #include "avoid.h" #pragma GCC optimize("O3,unroll-loops") #pragma GCC target("avx2") //#define int long long #define pii pair<int,int> #define vi vector<int> #define ff first #define ss second #define sp << " " << #define all(x) x.begin(),x.end() using namespace std; const int MOD = 1e9+7; std::pair<int, int> scout(int R, int H) { if (H == 1) { if (R == 10) { int ans = 0; for (int i=0;i<10;i++) { vi v; for (int j = 0;j<1000;j++) { if (j&(1<<i)) v.push_back(j+1); } send(v); } vi rets = wait(); for (int i = 0;i<10;i++) if (rets[i]) ans|=(1<<i); return {ans+1,ans+1}; } else { } } else if (H == 2) { assert(R == 30); for (int i = 0;i<10;i++) { vi v,v2; for (int j = 0;j<1000;j++) { if (j&(1<<i)) v.push_back(j+1); else v2.push_back(j+1); } send(v); send(v2); } vi rets = wait(); int diff = -1,diffs = 0; int orr = 0; for (int i = 0;i<10;i++) { if (rets[2*i] && rets[2*i+1]) diff = i,diffs|=(1<<i); if (rets[2*i]) orr|=(1<<i); } //ikisinde de olan bitler if (diff == -1) return {orr+1,orr+1}; int p1 = 0; for (int i=0;i<10;i++) { vi v; for (int j = 0;j<1000;j++) { if ((j&(1<<diff)) && (j&(1<<i))) { v.push_back(j+1); } } send(v); } vi rets2 = wait(); for (int i = 0;i<10;i++) if (rets2[i]) p1|=(1<<i); return {p1+1,(p1^diffs)+1}; } else { //R = H = 20 int l = 1; int r = 1000; while(l<=r) { int m = (l+r) >> 1; vi v; for (int i=1;i<=m;i++) v.push_back(i); send(v); int res = wait()[0]; if (res) r = m-1; else l = m+1; } int p1 = l; l = p1; r = 1000; while(l<=r) { int m = (l+r) >> 1; vi v; for (int i = m;i<=1000;i++) v.push_back(i); send(v); int res = wait()[0]; if (res) l = m+1; else r = m-1; } return {r,p1}; } }

Compilation message (stderr)

avoid.cpp: In function 'std::pair<int, int> scout(int, int)':
avoid.cpp:95:1: warning: control reaches end of non-void function [-Wreturn-type]
   95 | }
      | ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...