#include<bits/stdc++.h>
using namespace std;
#define endl "\n"
#define int long long
const int TAILLEMAXI=100*1000+2;
vector<int> req[TAILLEMAXI];
signed main(){
ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int nbjours,delaimax,nbreq;
cin>>nbjours>>delaimax>>nbreq;
for (int i=0;i<nbreq;i++){
int val;
cin>>val;
req[val].push_back(i+1);
}
int deb=0,fin=nbreq;
while (deb<fin){
int milieu=(deb+fin)/2;
int pb=0;
int j=0,encore=0;
for (int i=0;i<nbjours;i++){
if (j<i){
j=i;
encore=0;
}
j+=(req[i].size()+encore)/milieu;
encore=(req[i].size()+encore)%milieu;
if (j+min(encore,(int)1)>i+delaimax){
pb=1;
}
}
if (pb==0){
fin=milieu;
}
else {
deb=milieu+1;
}
}
cout<<deb<<endl;
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |