| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 | 
|---|---|---|---|---|---|---|---|
| 628511 | tutis | Rarest Insects (IOI22_insects) | C++17 | 74 ms | 336 KiB | 
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "insects.h"
#include <bits/stdc++.h>
using namespace std;
mt19937_64 rnd(2);
int min_cardinality(vector<int> x)
{
    shuffle(x.begin(), x.end(), rnd);
    int N = x.size();
    int add2 = 0;
    int add1 = 0;
    vector<int>y;
    vector<int>z;
    int lo, hi;
    int c = 0;
    auto cnt = [&](int m)->int
    {
        vector<int>v;
        y = {};
        z = {};
        int k = 0;
        bool jau = false;
        int liko = (int)x.size();
        for (int i : x)
        {
            if (!jau)
                v.push_back(i);
            if (!jau)
                move_inside(i);
            if (!jau)
                k = press_button();
            if (k + add1 == m + 1 || jau)
            {
                if (!jau)
                    v.pop_back();
                if (!jau)
                    move_outside(i);
                y.push_back(i);
            }
            liko--;
            if (c != 0)
                if ((int)v.size() + add2 == m * c)
                    jau = true;
        }
        z = v;
        int r = v.size();
        for (int i : v)
            move_outside(i);
        return add2 + r;
    };
    c = cnt(1);
    if (c * 2 > N)
        return 1;
    {
        x = y;
        add2 = c;
        add1 = 1;
    }
    lo = 1;
    hi = N / c;
    double bias = 3;
    bool fst = true;
    while (lo < hi)
    {
        int m = round((lo * bias + hi * 1.0) / (bias + 1));
        m = max(m, lo + 1);
        m = min(m, hi);
        int k = cnt(m);
        if (k == m * c)
        {
            lo = m;
            x = y;
            add2 = m * c;
            add1 = m;
        }
        else
        {
            if (m * c - k < m)
                lo = max(lo, m - (m * c - k));
            x = z;
            hi = m - 1;
        }
        fst = false;
    }
    return lo;
}
int min_cardinality(int N) {
    vector<int>v;
    for (int i = 0; i < N; i++)
        v.push_back(i);
    return min_cardinality(v);
}
컴파일 시 표준 에러 (stderr) 메시지
| # | Verdict | Execution time | Memory | Grader output | 
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output | 
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output | 
|---|---|---|---|---|
| Fetching results... | ||||
