# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
1025283 | 2024-07-16T19:14:18 Z | Issa | 드문 곤충 (IOI22_insects) | C++17 | 1 ms | 344 KB |
#include <bits/stdc++.h> using namespace std; typedef long long ll; pair<int, int> pii; const int maxn = 1e5 + 100; int n, d, sz; int used[maxn]; int f[maxn]; int mx[maxn]; int mn[maxn]; void move_inside(int i); void move_outside(int i); int press_button(); void add(int i){ sz++; used[i] = 1; move_inside(i); } void del(int i){ sz--; used[i] = 0; move_outside(i); } void clear(){ for(int i = 1; i <= n; i++){ if(used[i]) del(i); } } bool ok(int k){ bool res; for(int i = 0; i < n; i++){ if(used[i]) continue; add(i); if(press_button() > k){ del(i); } else{ if(f[i]){ res = 1; break; } else if(sz >= 1ll * d * k){ res = 0; break; } } } if(res){ for(int i = 0; i < n; i++){ if(used[i] == 1){ del(i); } else if(used[i] == 0){ used[i] = 2; } } } else{ for(int i = 0; i < n; i++){ if(used[i]) used[i] = 2; } } return res; } int min_cardinality(int N){ d = 0; n = N; for(int i = N - 1; i >= 0; i--){ add(i); mn[i] = n; if(press_button() == 1) f[i] = 1, d++; else del(i); } clear(); int ans = n / d; for(int l = 1, r = n / d - 1; l <= r;){ int mid = (l + r) >> 1; if(!ok) l = mid + 1; else r = mid - 1, ans = mid; } return ans; }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 0 ms | 344 KB | Wrong answer. |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 0 ms | 344 KB | Wrong answer. |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 344 KB | Output is correct |
2 | Incorrect | 0 ms | 344 KB | Wrong answer. |
3 | Halted | 0 ms | 0 KB | - |