제출 #742661

#제출 시각아이디문제언어결과실행 시간메모리
742661doowey드문 곤충 (IOI22_insects)C++17
100 / 100
71 ms560 KiB
#include <bits/stdc++.h> #include "insects.h" using namespace std; typedef pair<int, int> pii; #define fi first #define se second #define mp make_pair mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); int gen(int m){ return ((int)rng() % m + m) % m; } int min_cardinality(int n) { int val; set<int> in; set<int> st; vector<int> cand; for(int i = 0 ; i < n; i ++ ){ move_inside(i); val = press_button(); cand.push_back(i); if(val > 1){ move_outside(i); } else{ in.insert(i); } } st = in; for(int i = 1; i < n; i ++ ){ swap(cand[i], cand[gen(i + 1)]); } int dist = in.size(); int l = 1; int r = n/dist + 1; int mid; while(l + 1 < r){ mid = (l + r) / 2; if(mid * dist > n){ r = mid; continue; } for(auto i : cand){ if(!in.count(i)){ move_inside(i); val = press_button(); if(val > mid){ move_outside(i); } else{ in.insert(i); } if(in.size() == mid * dist) break; } } if(in.size() == mid * dist){ l = mid; st = in; } else{ r = mid; cand.clear(); for(auto q : in){ if(st.count(q)) continue; move_outside(q); cand.push_back(q); } for(int i = 1; i < cand.size(); i ++ ){ swap(cand[i], cand[gen(i + 1)]); } in = st; } } return l; }

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

insects.cpp: In function 'int min_cardinality(int)':
insects.cpp:58:30: warning: comparison of integer expressions of different signedness: 'std::set<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   58 |                 if(in.size() == mid * dist) break;
      |                    ~~~~~~~~~~^~~~~~~~~~~~~
insects.cpp:61:22: warning: comparison of integer expressions of different signedness: 'std::set<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   61 |         if(in.size() == mid * dist){
      |            ~~~~~~~~~~^~~~~~~~~~~~~
insects.cpp:74:30: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   74 |             for(int i = 1; i < cand.size(); i ++ ){
      |                            ~~^~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...