답안 #942183

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
942183 2024-03-10T10:35:19 Z benjaminkleyn 드문 곤충 (IOI22_insects) C++17
0 / 100
3 ms 600 KB
#include <bits/stdc++.h>
#include "insects.h"
using namespace std;

int cnt;
bool inside[2000];
bool bad[2000];

void init()
{
    cnt = 0;
    memset(inside, false, sizeof(inside));
    memset(bad, false, sizeof(bad));
}
void move_in(int i)
{
    if (inside[i])
        return;
    cnt++;
    inside[i] = true;
    move_inside(i);
}
void move_out(int i)
{
    if (!inside[i])
        return;
    cnt--;
    inside[i] = false;
    move_outside(i);
}

int min_cardinality(int N) 
{
    init();
    for (int i = 0; i < N; i++)
    {
        move_in(i);
        if (press_button() > 1)
            move_out(i);
    }
    int num_types = cnt;

    if (num_types == 1)
        return N;
    if (num_types == N)
        return 1;

    int lo = 1, hi = N / cnt + 1, mid, ans = 1;
    while (lo < hi)
    {
        mid = (lo + hi) / 2;

        vector<int> new_insects;
        vector<int> bad_insects;
        for (int i = 0; i < N; i++)
        {
            if (!(bad[i] || inside[i]))
            {
                move_in(i);

                if (press_button() > mid)
                {
                    bad_insects.push_back(i);
                    move_out(i);
                }
                else
                    new_insects.push_back(i);

                if (cnt >= mid * num_types)
                    break;
            }
        }

        if (cnt == mid * num_types)
            ans = mid, lo = mid + 1;
        else
        {
            for (int i : bad_insects)
                bad[i] = true;
            for (int i : new_insects)
                move_out(i);
            hi = mid - 1;
        }
    }
    return ans;
}
# 결과 실행 시간 메모리 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 Correct 0 ms 344 KB Output is correct
6 Correct 1 ms 344 KB Output is correct
7 Correct 1 ms 344 KB Output is correct
8 Correct 3 ms 344 KB Output is correct
9 Incorrect 2 ms 600 KB Wrong answer.
10 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 Correct 0 ms 344 KB Output is correct
6 Correct 1 ms 344 KB Output is correct
7 Correct 1 ms 344 KB Output is correct
8 Correct 3 ms 344 KB Output is correct
9 Incorrect 2 ms 600 KB Wrong answer.
10 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 Correct 0 ms 344 KB Output is correct
6 Incorrect 0 ms 344 KB Wrong answer.
7 Halted 0 ms 0 KB -