Submission #736530

#TimeUsernameProblemLanguageResultExecution timeMemory
736530AdamGSRarest Insects (IOI22_insects)C++17
82.21 / 100
119 ms432 KiB
#include "insects.h" #include<bits/stdc++.h> using namespace std; #define rep(a, b) for(int a = 0; a < (b); ++a) #define st first #define nd second #define pb push_back #define all(a) a.begin(), a.end() int min_cardinality(int n) { vector<int>A, B; rep(i, n) { move_inside(i); if(press_button()==1) A.pb(i); else { B.pb(i); move_outside(i); } } for(auto i : A) move_outside(i); int po=1, ko=n/(int)A.size(); stack<pair<int,int>>S; S.push({-1, -1}); mt19937 rng(chrono::high_resolution_clock::now().time_since_epoch().count()); rep(i, A.size()) swap(A[i], A[rng()%(i+1)]); while(po<ko) { int sr=po+(ko-po)/4; while(S.top().st>sr) { B.pb(S.top().nd); move_outside(S.top().nd); S.pop(); } vector<int>tmp; rep(i, B.size()) swap(B[i], B[rng()%(i+1)]); for(auto i : B) { move_inside(i); int x=press_button(); if(x>sr) { move_outside(i); tmp.pb(i); continue; } S.push({x, i}); } B=tmp; bool ok=false; for(auto i : A) { move_inside(i); int x=press_button(); move_outside(i); if(x==sr) { ok=true; break; } } if(ok) ko=sr; else po=sr+1; } return po; }

Compilation message (stderr)

insects.cpp: In function 'int min_cardinality(int)':
insects.cpp:4:36: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    4 | #define rep(a, b) for(int a = 0; a < (b); ++a)
      |                                    ^
insects.cpp:24:3: note: in expansion of macro 'rep'
   24 |   rep(i, A.size()) swap(A[i], A[rng()%(i+1)]);
      |   ^~~
insects.cpp:4:36: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    4 | #define rep(a, b) for(int a = 0; a < (b); ++a)
      |                                    ^
insects.cpp:33:5: note: in expansion of macro 'rep'
   33 |     rep(i, B.size()) swap(B[i], B[rng()%(i+1)]);
      |     ^~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...