| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
|---|---|---|---|---|---|---|---|
| 1366131 | mariza | 커다란 상품 (IOI17_prize) | C++20 | 14 ms | 412 KiB |
#include "prize.h"
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define MID ((l+r)/2)
int find_best(int n){
ll f=0, c=0, x=0, q=0;
for(ll i=0; i<500; i++){
// assert(q<10000);
// q++;
vector<int> ans=ask(i);
if(ans[0]==0 && ans[1]==0) return i;
else if(ans[0]+ans[1]>x){
f+=c;
c=0;
x=ans[0]+ans[1];
}
else if(ans[0]+ans[1]==x){
c++;
}
else{
f++;
}
}
assert(x<500);
ll y=500;
while(f<x){
assert(q<x);
q++;
ll l=y, r=n-1, idx;
while(l<=r){
vector<int> ans=ask(MID);
if(ans[0]==0 && ans[1]==0) return MID;
else if(ans[0]+ans[1]<x){
idx=MID;
r=MID-1;
}
else if(ans[0]>f) r=MID-1;
else l=MID+1;
}
f++;
y=idx+1;
}
}
컴파일 시 표준 에러 (stderr) 메시지
| # | 결과 | 실행 시간 | 메모리 | 채점기 출력 |
|---|---|---|---|---|
| 결과를 불러오는 중입니다… | ||||
| # | 결과 | 실행 시간 | 메모리 | 채점기 출력 |
|---|---|---|---|---|
| 결과를 불러오는 중입니다… | ||||
