Submission #628125

#TimeUsernameProblemLanguageResultExecution timeMemory
628125Cross_RatioRarest Insects (IOI22_insects)C++17
0 / 100
40 ms1308 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); S2.erase(69); 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; id = -1; v = -1; 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:44:24: warning: comparison of integer expressions of different signedness: 'std::set<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   44 |             if(S.size()==k*mid) break;
      |                ~~~~~~~~^~~~~~~
insects.cpp:46:20: warning: comparison of integer expressions of different signedness: 'std::set<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   46 |         if(S.size()==k*mid) break;
      |            ~~~~~~~~^~~~~~~
insects.cpp:51:20: warning: comparison of integer expressions of different signedness: 'std::set<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   51 |         if(S.size()==k*mid) {
      |            ~~~~~~~~^~~~~~~
insects.cpp:58:28: warning: comparison of integer expressions of different signedness: 'std::set<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   58 |                 if(S.size()==k*mid) break;
      |                    ~~~~~~~~^~~~~~~
insects.cpp:71:32: warning: comparison of integer expressions of different signedness: 'std::set<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   71 |                     if(S.size()==k*mid) break;
      |                        ~~~~~~~~^~~~~~~
insects.cpp:73:28: warning: comparison of integer expressions of different signedness: 'std::set<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   73 |                 if(S.size()==k*mid) break;
      |                    ~~~~~~~~^~~~~~~
insects.cpp:116:32: warning: comparison of integer expressions of different signedness: 'std::set<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
  116 |                     if(S.size()==k*mid) break;
      |                        ~~~~~~~~^~~~~~~
insects.cpp:118:28: warning: comparison of integer expressions of different signedness: 'std::set<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
  118 |                 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...