[Problem Link](https://codeforces.com/problemset/problem/1593/C)↵
↵
~~~~~↵
↵
bool canISaveMidMice(int mid, vector<int>a, int n)↵
{ ↵
// 0 1 2 3 4 5 6 7 8 9 10 ↵
//1 2 3 4 5 6 7 | 8 9 10 11↵
//n = 11↵
int mouse = 0, sum = 0, ind = a.size() - mid ;//11 - 4 = 6 ↵
while(ind < a.size())↵
{↵
if(mouse >= a[ind])return false;↵
sum += (n - a[ind]);↵
mouse += (n - a[ind]);↵
ind++;↵
}↵
↵
return true;↵
}↵
void solve()↵
{↵
int n, k;↵
cin>>n>>k;↵
↵
_vi v(k);↵
for(auto &it : v)cin>>it;↵
sort(_a(v));↵
↵
int l = 0, h = k;↵
int ans = 0;↵
while(l <= h)↵
{↵
int mid = l - ((l - h)/2);↵
if(canISaveMidMice(mid, v, n) == false)↵
{↵
h = mid - 1;↵
}↵
else↵
{↵
ans = max(ans, mid);↵
// debug(ans);↵
l = mid + 1; ↵
} ↵
}↵
↵
cout<<ans<<endl;↵
↵
return;↵
↵
}↵
[Problem Link](https://codeforces.com/problemset/problem/1593/C)↵
~~~~~↵
↵
↵
~~~~~↵
↵
bool canISaveMidMice(int mid, vector<int>a, int n)↵
{ ↵
// 0 1 2 3 4 5 6 7 8 9 10 ↵
//1 2 3 4 5 6 7 | 8 9 10 11↵
//n = 11↵
int mouse = 0, sum = 0, ind = a.size() - mid ;//11 - 4 = 6 ↵
while(ind < a.size())↵
{↵
if(mouse >= a[ind])return false;↵
sum += (n - a[ind]);↵
mouse += (n - a[ind]);↵
ind++;↵
}↵
↵
return true;↵
}↵
void solve()↵
{↵
int n, k;↵
cin>>n>>k;↵
↵
_vi v(k);↵
for(auto &it : v)cin>>it;↵
sort(_a(v));↵
↵
int l = 0, h = k;↵
int ans = 0;↵
while(l <= h)↵
{↵
int mid = l - ((l - h)/2);↵
if(canISaveMidMice(mid, v, n) == false)↵
{↵
h = mid - 1;↵
}↵
else↵
{↵
ans = max(ans, mid);↵
// debug(ans);↵
l = mid + 1; ↵
} ↵
}↵
↵
cout<<ans<<endl;↵
↵
return;↵
↵
}↵
~~~~~↵
↵