Submission #1235731

#TimeUsernameProblemLanguageResultExecution timeMemory
1235731MuhammadSaram드문 곤충 (IOI22_insects)C++20
0 / 100
0 ms408 KiB
#include "insects.h" #include <bits/stdc++.h> using namespace std; #define get press_button set<int> se; void add(int u) { if (se.count(u)) return; move_inside(u), se.insert(u); } void rem(int u) { if (!se.count(u)) return; move_outside(u), se.erase(u); } int min_cardinality(int n) { vector<int> v={0}; add(0); for (int i=1;i<n;i++) { add(i), v.push_back(i); if (get()==2) rem(i),v.pop_back(); } if (v.size()>250) { bool vis[n]={}; int ans=0, t=v.size(); while (1) { ans++; for (int i:v) vis[i]=1; while (!v.empty()) rem(v.back()), v.pop_back(); for (int i=0;i<n;i++) { if (vis[i]) continue; add(i), v.push_back(i); if (get()==2) rem(i), v.pop_back(); } if (v.size()<t) break; } return ans; } else { // if (v.empty()) return 1/0; int l[n], r[n]; vector<int> mid[n]; for (int i=0;i<n;i++) if (!se.count(i)) l[i]=-1, r[i]=(int)v.size()-1, mid[(l[i]+r[i])/2].push_back(i); for (int i=0;i<v.size();i++) l[v[i]]=i-1,r[v[i]]=i; for (int ct=0;ct<8;ct++) { bool it=0; for (int i=0;i<n;i++) if (l[i]+1<r[i]) it=1; if (!it) break; for (int i:v) // { // if (i<0 or i>=n) return 1/0; rem(i); // } for (int i=0;i<v.size();i++) { if (v[i]<0 or v[i]>=n) return 1/0; add(v[i]); for (int x:mid[i]) { add(x); if (get()==2) r[x]=i; else l[x]=i; rem(x); mid[(l[x]+r[x])/2].push_back(x); } mid[i].clear(); } } map<int,int> cnt; for (int i=0;i<n;i++) cnt[r[i]]++; int ans=n; for (auto [i,x]:cnt) ans=min(ans,x); return ans; } }

Compilation message (stderr)

insects.cpp: In function 'int min_cardinality(int)':
insects.cpp:74:64: warning: division by zero [-Wdiv-by-zero]
   74 |                                 if (v[i]<0 or v[i]>=n) return 1/0;
      |                                                               ~^~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...