제출 #761045

#제출 시각아이디문제언어결과실행 시간메모리
761045Khizri드문 곤충 (IOI22_insects)C++17
100 / 100
52 ms476 KiB
#include "insects.h" #include <bits/stdc++.h> using namespace std; #define ll long long #define pb push_back #define F first #define S second #define INF 1e18 #define all(v) (v).begin(),(v).end() #define rall(v) (v).rbegin(),(v).rend() #define pii pair<int,int> #define pll pair<ll,ll> #define OK cout<<"Ok"<<endl; #define MOD (ll)(1e9+7) #define endl "\n" const int mxn=2e3+5; int sz,n,cnt,color[mxn],color2[mxn]; set<int>ST; bool check(int k){ if(k==1) return 1; set<int>st; st=ST; vector<int>vt; for(int i=0;i<n;i++){ vt.pb(i); } unsigned seed = std::chrono::system_clock::now().time_since_epoch().count(); shuffle(vt.begin(),vt.end(),default_random_engine(seed)); memset(color2,0,sizeof(color2)); for(int id=0;id<n;id++){ int i=vt[id]; if(color[i]) continue; if(st.count(i)) continue; if(st.size()==cnt*k) break; move_inside(i); st.insert(i); if(press_button()>k){ st.erase(i); color2[i]=1; move_outside(i); } } if(st.size()==cnt*k){ ST=st; return 1; } else{ for(int i=0;i<n;i++){ if(!st.count(i)){ color[i]=1; } } for(auto x:st){ if(!ST.count(x)){ move_outside(x); } } return 0; } } int min_cardinality(int N) { n=N; set<int>st; for(int i=0;i<n;i++){ move_inside(i); cnt++; st.insert(i); if(press_button()>1){ move_outside(i); st.erase(i); cnt--; } } for(auto x:st){ move_outside(x); } if(cnt==1) return n; if(cnt==n) return 1; if(cnt>n/2) return 1; int l=1,r=n/cnt; while(l<=r){ int m=(l+r)/2; if(check(m)){ l=m+1; } else{ r=m-1; } } return l-1; }

컴파일 시 표준 에러 (stderr) 메시지

insects.cpp: In function 'bool check(int)':
insects.cpp:34:21: warning: comparison of integer expressions of different signedness: 'std::set<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   34 |         if(st.size()==cnt*k) break;
      |            ~~~~~~~~~^~~~~~~
insects.cpp:43:17: warning: comparison of integer expressions of different signedness: 'std::set<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   43 |     if(st.size()==cnt*k){
      |        ~~~~~~~~~^~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...