답안 #859042

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
859042 2023-10-09T14:55:37 Z thinknoexit 드문 곤충 (IOI22_insects) C++17
0 / 100
0 ms 344 KB
#include <bits/stdc++.h>
#include "insects.h"
using namespace std;
using ll = long long;
int in[2020];
int min_cardinality(int n) {
    int type = 0;
    for (int i = 0;i < n;i++) {
        move_inside(i);
        if (press_button() == 2) {
            move_outside(i);
        }
        else in[i] = 1, type++;
    }
    if (type == 1) return n;
    int mxans = n / type;
    int sq = sqrt(n);
    if (mxans <= sq) {
        for (int i = 1;i <= mxans;i++) {
            int cnt = 0;
            for (int j = 0;j < n;j++) {
                if (in[j]) continue;
                move_inside(j);
                if (press_button() > i) {
                    move_outside(j);
                }
                else in[j] = 1, cnt++;
            }
            if (cnt != type) return i;
        }
    }
    else {
        int now = 1;
        while (now + sq <= mxans) {
            now += sq;
            int cnt = 0;
            for (int i = 0;i < sq && now + sq <= mxans;i++) {
                if (in[i]) continue;
                move_inside(i);
                if (press_button() > now) {
                    move_outside(i);
                }
                else in[i] = now, cnt++;
            }
            if (cnt != type * sq) {
                for (int i = 0;i < n;i++) {
                    if (in[i] == now) move_outside(i), in[i] = 0;
                }
                while (1) {
                    now++;
                    int cnt = 0;
                    for (int i = 0;i < n;i++) {
                        if (in[i]) continue;
                        move_inside(i);
                        if (press_button() > now) {
                            move_outside(i);
                        }
                        else in[i] = now, cnt++;
                    }
                    if (cnt != type) return now - 1;
                }
            }
        }
        while (now <= mxans) {
            now++;
            int cnt = 0;
            for (int i = 0;i < n;i++) {
                if (in[i]) continue;
                move_inside(i);
                if (press_button() > now) {
                    move_outside(i);
                }
                else in[i] = now, cnt++;
            }
            if (cnt != type) return now - 1;
        }
    }
    // n , n , n
    /*
        ans <= n / type
        ans <= n - mx
    */
}

Compilation message

insects.cpp: In function 'int min_cardinality(int)':
insects.cpp:83:1: warning: control reaches end of non-void function [-Wreturn-type]
   83 | }
      | ^
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 0 ms 344 KB Output is correct
3 Correct 0 ms 344 KB Output is correct
4 Incorrect 0 ms 344 KB Wrong answer.
5 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 0 ms 344 KB Output is correct
3 Correct 0 ms 344 KB Output is correct
4 Incorrect 0 ms 344 KB Wrong answer.
5 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 0 ms 344 KB Output is correct
3 Correct 0 ms 344 KB Output is correct
4 Correct 0 ms 344 KB Output is correct
5 Incorrect 0 ms 344 KB Wrong answer.
6 Halted 0 ms 0 KB -