You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
vector<vi> dp;
intss(int F, int cnt){
if (F==0 || F==1) // если на малой высотеreturn F;
if (cnt==1) // если осталось 1 яйцоreturn F; // далее только такif (dp[F][cnt]!=-1) // если уже посчитаноreturn dp[F][cnt]; // возв-емint ans=1e9;
forn(f,1,F+1){ // ищем на оставшейся высоте ф// собираем ответ, +1 тк истрачена попытка// f-1-если яйцо разбилось, F-f - если нет
ans = min(ans, 1 + max(ss(f-1, cnt-1), ss(F-f, cnt))); // макс тк мы должны быть certain, мин тк ищем minimum number of moves
}
dp[F][cnt] = ans; // сохраняем знач-ие для высоты, чтобы после не пересч-тьreturn ans;
}
voidsolve(){
int n;
cin>>n;
dp.resize(n+1,vi(3, -1));
cout<<ss(n,2);
}