Submission #837768

#TimeUsernameProblemLanguageResultExecution timeMemory
837768kshitij_sodani드문 곤충 (IOI22_insects)C++17
99.95 / 100
50 ms552 KiB
#include <bits/stdc++.h>
using namespace std;
typedef long long llo;
#define a first
#define b second
#define pb push_back
typedef long long llo;
#define endl '\n'

#include "insects.h"
#define in move_inside
#define out move_outside
#define query press_button

int d;
int query(int l,int r,vector<int> aa,vector<int> bb){
    //cout<<l<<":"<<r<<endl;

    if(l==r){
        return l;
    }
    int mid=(l+r+1)/2;
    vector<int> cc;
    vector<int> dd;
    int le=bb.size();
    int ind2=-1;
    for(auto j:bb){
        if(aa.size()+cc.size()==mid*d){
            dd.pb(j);
            continue;
        }
        ind2++;
        if(aa.size()+cc.size()+le<mid*d){
            for(auto jj:cc){
                out(jj);
            }
            for(int jj=ind2;jj<bb.size();jj++){
                cc.pb(bb[jj]);
            }
            return query(l,mid-1,aa,cc);
        }
        le--;
        in(j);
        cc.pb(j);
        if(query()>mid){
            out(j);
            cc.pop_back();
            dd.pb(j);
        }
    }

    if(aa.size()+cc.size()!=mid*d){
        for(auto j:cc){
            out(j);
        }
        return query(l,mid-1,aa,cc);
    }
    for(auto j:cc){
        aa.pb(j);
    }
    return query(mid,r,aa,dd);
}
int min_cardinality(int n) {
    vector<int> ss;
    vector<int> tt;
    for(int i=0;i<n;i++){
        in(i);
        ss.pb(i);
        if(query()==2){
            out(i);
            tt.pb(i);
            ss.pop_back();
        }
    }
    d=ss.size();
    if(ss.size()==n){
        return 1;
    }
    if(ss.size()==1){
        return n;
    }

    int x=query(1,n/(ss.size()),ss,tt);



return x;
}

Compilation message (stderr)

insects.cpp: In function 'int press_button(int, int, std::vector<int>, std::vector<int>)':
insects.cpp:28:31: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   28 |         if(aa.size()+cc.size()==mid*d){
      |            ~~~~~~~~~~~~~~~~~~~^~~~~~~
insects.cpp:33:34: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   33 |         if(aa.size()+cc.size()+le<mid*d){
      |            ~~~~~~~~~~~~~~~~~~~~~~^~~~~~
insects.cpp:37:31: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   37 |             for(int jj=ind2;jj<bb.size();jj++){
      |                             ~~^~~~~~~~~~
insects.cpp:52:27: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   52 |     if(aa.size()+cc.size()!=mid*d){
      |        ~~~~~~~~~~~~~~~~~~~^~~~~~~
insects.cpp: In function 'int min_cardinality(int)':
insects.cpp:76:17: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   76 |     if(ss.size()==n){
      |        ~~~~~~~~~^~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...