Submission #157771

#TimeUsernameProblemLanguageResultExecution timeMemory
157771InfiniteJestJob Scheduling (CEOI12_jobs)C++14
0 / 100
812 ms14564 KiB
#include <iostream> #include <fstream> #include <vector> #include <queue> #include <algorithm> #include <math.h> #define pb push_back #define mp make_pair #define fi first #define se second using namespace std; ifstream in("input.txt"); ofstream out("output.txt"); typedef long long ll; int n,d,m; pair<int,int> v[1000001]; bool funz(int k){ int p=1; for(int i=0;i<m;i+=k){ for(int y=i;y<i+k;y++){ if(p>v[y].fi+d)return 0; } p++; } return 1; } int main(){ cin>>n>>d>>m; for(int i=0;i<m;i++){ cin>>v[i].fi; v[i].se=i; } sort(v,v+m); int s=1; int d=m; int minn=1e9; while(s<=d){ int k=(s+d)/2; if(funz(k)){ minn=min(minn,k); d=k-1; } else{ s=k+1; } } cout<<minn<<endl; for(int i=0;i<m;i+=minn){ for(int y=i;y<i+minn&&y<m;y++){ cout<<v[y].se+1<<" "; } cout<<"0 "<<endl; } for(int i=m/minn+min(1,m%minn);i<n;i++){ cout<<"0 "<<endl; } }
#Verdict Execution timeMemoryGrader output
Fetching results...