Submission #716133

#TimeUsernameProblemLanguageResultExecution timeMemory
716133PVSekharJob Scheduling (CEOI12_jobs)C++14
0 / 100
177 ms680 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long const ll MOD = 1000000007; bool check(int x,vector<int>& v,int d,int n){ bool c=true; int p_vac=0,p_day=0; // cout<<x<<endl; for (int i = 1; i <= n; i++) { // for (int i = 0; i < n; i++) // { // cout<<p_day<<" "; // } if(!c)break; if(p_day==0&&v[i]==0)continue; if(p_day&&v[i]==0){ p_day--; p_vac=0; continue; } if(p_day==0){ p_day=(v[i]+x-1)/x; if(p_day>d){ c=false; break; } p_day--; p_vac=x-v[i]%x; if(p_vac==x)p_vac=0; continue; } if(p_vac&&v[i]<=p_vac){ p_vac--; }else{ v[i]-=p_vac; p_day+=(v[i]+x-1)/x; if(p_day>d){ c=false; break; } p_vac=x-v[i]%x; if(p_vac==x)p_vac=0; } p_day--; } // cout<<endl; return c; } int main() { int n,d,m,x; cin>>n>>d>>m; vector<int> v(n+1,0); for (int i = 0; i < m; i++) { cin>>x; v[x]++; } int l=0,r=n,mid; while(r-l>1){ mid=(l+r)/2; if(check(mid,v,d,n)){ r=mid; }else{ l=mid; } } cout<<r<<endl; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...