Submission #628126

#TimeUsernameProblemLanguageResultExecution timeMemory
628126Cross_RatioRarest Insects (IOI22_insects)C++17
99.95 / 100
69 ms1364 KiB
//#include "insects.h" #include <bits/stdc++.h> using namespace std; map<int,set<int>> MS; void move_inside(int); void move_outside(int); int press_button(); int min_cardinality(int N) { int i, j; set<int> S, S2; move_inside(0); S.insert(0); for(i=1;i<N;i++) { move_inside(i); S.insert(i); int c = press_button(); if(c >= 2) { move_outside(i); S.erase(i); } } for(i=0;i<N;i++) S2.insert(i); int k = S.size(); MS[1] = S; int s = 1, e = N/k+1; if(e==s+1) return s; int mid = (s+e)/2; int id = -1; int v = 1; for(int i : S2) { if(S.find(i)==S.end()) { move_inside(i); S.insert(i); int c = press_button(); if(c>v) { v = c; id = i; } if(c >= mid+1) { move_outside(i); S.erase(i); } if(S.size()==k*mid) break; } if(S.size()==k*mid) break; } MS[mid] = S; while(s+1<e) { int mid = (s+e)/2; if(S.size()==k*mid) { s = mid; if(mid+1>=e) break; mid = (s+e)/2; for(int i : S2) { if(S.size()==k*mid) break; if(S.find(i)==S.end()) { move_inside(i); S.insert(i); int c = press_button(); if(c>v) { v = c; id = i; } if(c >= mid+1) { move_outside(i); S.erase(i); } if(S.size()==k*mid) break; } if(S.size()==k*mid) break; } MS[mid] = S; } else { e = mid; if(s+1>=e) break; vector<int> era; for(int m : S2) { if(S.find(m)==S.end()) era.push_back(m); } for(int i : era) S2.erase(i); S2.erase(id); S.erase(id); mid = (s+e)/2; auto it = MS.upper_bound(mid); it--; set<int> S3 = it->second; for(i=0;i<N;i++) { if(S3.find(i)!=S3.end()&&S.find(i)==S.end()) { move_inside(i); S.insert(i); } if(S3.find(i)==S3.end()&&S.find(i)!=S.end()) { move_outside(i); S.erase(i); } } id = -1; v = -1; for(int i : S2) { if(S.find(i)==S.end()) { move_inside(i); S.insert(i); int c = press_button(); if(c>v) { v = c; id = i; } if(c >= mid+1) { move_outside(i); S.erase(i); } if(S.size()==k*mid) break; } if(S.size()==k*mid) break; } MS[mid] = S; } } return s; }

Compilation message (stderr)

insects.cpp: In function 'int min_cardinality(int)':
insects.cpp:43:24: warning: comparison of integer expressions of different signedness: 'std::set<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   43 |             if(S.size()==k*mid) break;
      |                ~~~~~~~~^~~~~~~
insects.cpp:45:20: warning: comparison of integer expressions of different signedness: 'std::set<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   45 |         if(S.size()==k*mid) break;
      |            ~~~~~~~~^~~~~~~
insects.cpp:50:20: warning: comparison of integer expressions of different signedness: 'std::set<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   50 |         if(S.size()==k*mid) {
      |            ~~~~~~~~^~~~~~~
insects.cpp:55:28: warning: comparison of integer expressions of different signedness: 'std::set<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   55 |                 if(S.size()==k*mid) break;
      |                    ~~~~~~~~^~~~~~~
insects.cpp:68:32: warning: comparison of integer expressions of different signedness: 'std::set<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   68 |                     if(S.size()==k*mid) break;
      |                        ~~~~~~~~^~~~~~~
insects.cpp:70:28: warning: comparison of integer expressions of different signedness: 'std::set<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   70 |                 if(S.size()==k*mid) break;
      |                    ~~~~~~~~^~~~~~~
insects.cpp:113:32: warning: comparison of integer expressions of different signedness: 'std::set<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
  113 |                     if(S.size()==k*mid) break;
      |                        ~~~~~~~~^~~~~~~
insects.cpp:115:28: warning: comparison of integer expressions of different signedness: 'std::set<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
  115 |                 if(S.size()==k*mid) break;
      |                    ~~~~~~~~^~~~~~~
insects.cpp:9:12: warning: unused variable 'j' [-Wunused-variable]
    9 |     int i, j;
      |            ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...