Submission #781935

#TimeUsernameProblemLanguageResultExecution timeMemory
781935Sam_a17Rarest Insects (IOI22_insects)C++17
100 / 100
53 ms316 KiB
#define _CRT_SECURE_NO_WARNINGS #include <bits/stdc++.h> //#include "temp.cpp" #include <cstdio> using namespace std; #ifndef ONLINE_JUDGE #define dbg(x) cerr << #x <<" "; print(x); cerr << endl; #else #define dbg(x) #endif #define sz(x) (int)x.size() #define len(x) (int)x.length() #define all(x) (x).begin(), (x).end() #define rall(x) (x).rbegin(), (x).rend() #define clr(x) (x).clear() #define uniq(x) x.resize(unique(all(x)) - x.begin()); #define blt __builtin_popcount #define pb push_back #define popf pop_front #define popb pop_back #define ld long double #define ll long long void print(long long t) {cerr << t;} void print(int t) {cerr << t;} void print(string t) {cerr << t;} void print(char t) {cerr << t;} void print(double t) {cerr << t;} void print(long double t) {cerr << t;} void print(unsigned long long t) {cerr << t;} #include <ext/pb_ds/assoc_container.hpp> using namespace __gnu_pbds; #define nl '\n' // Indexed Set template <class T> using Tree = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>; template <class T, class V> void print(pair <T, V> p); template <class T> void print(vector <T> v); template <class T> void print(set <T> v); template <class T, class V> void print(map <T, V> v); template <class T> void print(multiset <T> v); template <class T, class V> void print(T v[],V n) {cerr << "["; for(int i = 0; i < n; i++) {print(v[i]); cerr << " "; } cerr << "]";} template <class T, class V> void print(pair <T, V> p) {cerr << "{"; print(p.first); cerr << ","; print(p.second); cerr << "}";} template <class T> void print(vector <T> v) {cerr << "[ "; for (T i : v) {print(i); cerr << " ";} cerr << "]";} // template <class T> void print(vector <T> v) {cerr << "[ "; for (T i : v) {print(i); cerr << " ";} cerr << "]";} template <class T> void print(set <T> v) {cerr << "[ "; for (T i : v) {print(i); cerr << " ";} cerr << "]";} template <class T> void print(multiset <T> v) {cerr << "[ "; for (T i : v) {print(i); cerr << " ";} cerr << "]";} template <class T> void print(Tree <T> v) {cerr << "[ "; for (T i : v) {print(i); cerr << " ";} cerr << "]";} template <class T, class V> void print(map <T, V> v) {cerr << "[ "; for (auto i : v) {print(i); cerr << " ";} cerr << "]";} template <class T> void print(deque <T> v) {cerr << "[ "; for (T i : v) {print(i); cerr << " ";} cerr << "]";} // for random generations mt19937 myrand(chrono::steady_clock::now().time_since_epoch().count()); // mt19937 myrand(131); // for grid problems int dx[8] = {-1,0,1,0,1,-1,1,-1}; int dy[8] = {0,1,0,-1,1,1,-1,-1}; // lowest / (1 << 17) >= 1e5 / (1 << 18) >= 2e5 / (1 << 21) >= 1e6 void fastIO() { ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); } // file in/out void setIO(string str = "") { fastIO(); // if(str == "input") { // freopen("input.txt", "r", stdin); // freopen("output.txt", "w", stdout); // } else if(str != "") { // freopen((str + ".in").c_str(), "r", stdin); // freopen((str + ".out").c_str(), "w", stdout); // } } void move_inside(int i); void move_outside(int i); int press_button(); int min_cardinality(int N) { int diff = 0; vector<int> het; for(int i = 0; i < N; i++) { move_inside(i); int cr = press_button(); if(cr > 1) { move_outside(i); } else { het.push_back(i); diff++; } } for(auto i: het) { move_outside(i); } vector<int> hh; for(int i = 0; i < N; i++) { hh.push_back(i); } random_shuffle(all(hh)); if(diff == 2) { for(int i = 0; i < N; i++) { move_inside(i); } int cr = press_button(); return N - cr; } else if(diff == 1) { return N; } int ina = 1, inb = N / diff, answ = -1; vector<bool> vi(N), rad(N); while(ina <= inb) { int mid = (ina + inb) / 2; int ss = 0; for(int i = 0; i < N; i++) { if(vi[i]) { ss++; } } random_shuffle(all(hh)); int cnt = 0; vector<int> this_turn, vabshe_eli; for(int in = 0; in < N; in++) { int i = hh[in]; if(rad[i]) continue; if(vi[i]) continue; move_inside(i); int cur = press_button(); if(cur > mid) { move_outside(i); vabshe_eli.push_back(i); } else { vi[i] = true; this_turn.push_back(i); ss++; } if(ss == diff * mid) { break; } } if(ss == diff * mid) { answ = mid; ina = mid + 1; } else { for(auto i: this_turn) { vi[i] = false; move_outside(i); } for(auto i: vabshe_eli) { rad[i] = true; } inb = mid - 1; } } return answ; }

Compilation message (stderr)

insects.cpp: In function 'int min_cardinality(int)':
insects.cpp:137:9: warning: unused variable 'cnt' [-Wunused-variable]
  137 |     int cnt = 0;
      |         ^~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...