Submission #763809

#TimeUsernameProblemLanguageResultExecution timeMemory
763809raysh07드문 곤충 (IOI22_insects)C++17
0 / 100
6 ms208 KiB
#include "insects.h"
#include <bits/stdc++.h>
using namespace std;

int min_cardinality(int n) {
    vector <int> curr;
    int ans = -1;
    for (int i = 0; i < n; i++) curr.push_back(i);
    
    int last = -1;
    
    while (true){
        ans++;
        if (curr.size() == 0) break;
        
        random_shuffle(curr.begin(), curr.end());
        vector <int> pos;
        // for (auto i: curr){
        //     move_inside(i);
        //     pos.push_back(i);
        //     int x = press_button();
        //     if (x != ans + 1){
        //         pos.pop_back();
        //         move_outside(i);
        //     }
            
        //     if (last != -1 && pos.size() == last) break;
        // }
        
        for (int i = 0; i < curr.size(); i++){
            if (pos.size() == last) break;
            if (i == curr.size() - 1){
                move_inside(curr[i]);
                pos.push_back(curr[i]);
                
                int x = press_button();
                if (x != (ans + 1)){
                    pos.pop_back();
                    move_outside(curr[i]);
                }
            } else {
                move_inside(curr[i]);
                move_inside(curr[i + 1]);
                pos.push_back(curr[i]);
                pos.push_back(curr[i + 1]);
                
                int x = press_button();
                if (x == ans + 1){
                    i++;
                    continue;
                } else if (x == ans + 3){
                    i++;
                    pos.pop_back();
                    pos.pop_back();
                    move_outside(curr[i + 1]);
                    move_outside(curr[i]);
                } else {
                    move_outside(curr[i + 1]);
                    pos.pop_back();
                    x = press_button();
                    
                    if (x != ans + 1){
                        pos.pop_back();
                        move_outside(curr[i]);
                    }
                }
            }
        }
        
        if (last != -1 && pos.size() != last) break;
        
        // cout << pos.size() << "\n";
        
        set <int> holy;
        for (auto i : pos) holy.insert(i);
        vector <int> nc;
        for (auto i : curr) if (holy.find(i) == holy.end()) nc.push_back(i);
        curr = nc;
        last = pos.size();
    }
    
    return ans;
}

Compilation message (stderr)

insects.cpp: In function 'int min_cardinality(int)':
insects.cpp:30:27: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   30 |         for (int i = 0; i < curr.size(); i++){
      |                         ~~^~~~~~~~~~~~~
insects.cpp:31:28: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   31 |             if (pos.size() == last) break;
      |                 ~~~~~~~~~~~^~~~~~~
insects.cpp:32:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   32 |             if (i == curr.size() - 1){
      |                 ~~^~~~~~~~~~~~~~~~~~
insects.cpp:70:38: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   70 |         if (last != -1 && pos.size() != last) break;
      |                           ~~~~~~~~~~~^~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...