제출 #796376

#제출 시각아이디문제언어결과실행 시간메모리
796376ln_e드문 곤충 (IOI22_insects)C++17
48.13 / 100
177 ms552 KiB
    #include <bits/stdc++.h> //Andrei Alexandru a.k.a Sho
    #include "insects.h"
    using ll=long long;
    using ld=long double;
    int const INF=1000000005;
    ll const LINF=1000000000000000005;
    ll const mod=1000000007;
    ld const PI=3.14159265359;
    ll const MAX_N=3e5+5;
    ld const EPS=0.00000001;
    #pragma GCC optimize("O3")
    #pragma GCC optimize("Ofast")
    #define f first
    #define s second
    #define pb push_back
    #define mp make_pair
    #define endl '\n'
    #define sz(a) (int)a.size()
    #define CODE_START  ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);
    using namespace std;
    int cnt=0,n,viz[2005],nwviz[2005];
    vector<ll>original;
    ll check(ll mx){
      vector<ll>v;
      for(ll i=0;i<n;i++)
        nwviz[i]=viz[i];
      for(ll i=0;i<n;i++){
         if(v.size()+original.size()==cnt*mx){
          for(ll i=0;i<n;i++)
        viz[i]=nwviz[i];
        for(auto it : v){
          original.pb(it);
        }
        return 0;
      }
        if(viz[i]){
          continue;
        }
        move_inside(i);
        ll x=press_button();
        if(x>mx){
          move_outside(i);
        }else {
          v.pb(i);
          nwviz[i]=1;
        }
        if(v.size()+original.size()==cnt*mx){
          for(ll i=0;i<n;i++)
        viz[i]=nwviz[i];
        for(auto it : v){
          original.pb(it);
        }
        return 0;
      }
      }
      //  cout<<mx<<' '<<v.size()<<' '<<original.size()<<endl;
      if(v.size()+original.size()==cnt*mx){
          for(ll i=0;i<n;i++)
        viz[i]=nwviz[i];
        for(auto it : v){
          original.pb(it);
        }
        return 0;
      }
      for(auto it : v){
        move_outside(it);
      }
      return 1;
    }
    int min_cardinality(int N) {
      vector<ll>v;
     v.pb(0);
     n=N;
     move_inside(0);
     cnt=1;
     viz[0]=1;
     for(ll i=1;i<N;i++){
      move_inside(i);
      ll x=press_button();
      if(x>1){
        move_outside(i);
      }else {
        v.pb(i);
        viz[i]=1;
        cnt++;
      }
     }
     original=v;
     ll l=2,r=N-v.size()+1,ans=1;
     while(l<=r){
      ll mid=(l+r)/2;
      if(check(mid)==0){
        ans=mid;
        l=mid+1;
      }else r=mid-1;
     }
     return ans;
   }

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

insects.cpp: In function 'll check(ll)':
insects.cpp:28:37: warning: comparison of integer expressions of different signedness: 'std::vector<long long int>::size_type' {aka 'long unsigned int'} and 'll' {aka 'long long int'} [-Wsign-compare]
   28 |          if(v.size()+original.size()==cnt*mx){
      |             ~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~
insects.cpp:47:36: warning: comparison of integer expressions of different signedness: 'std::vector<long long int>::size_type' {aka 'long unsigned int'} and 'll' {aka 'long long int'} [-Wsign-compare]
   47 |         if(v.size()+original.size()==cnt*mx){
      |            ~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~
insects.cpp:57:34: warning: comparison of integer expressions of different signedness: 'std::vector<long long int>::size_type' {aka 'long unsigned int'} and 'll' {aka 'long long int'} [-Wsign-compare]
   57 |       if(v.size()+original.size()==cnt*mx){
      |          ~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...