Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <algorithm>
- using namespace std;
- struct vc{
- int a,ind;
- }v[10000];
- bool cmp(vc a,vc b){
- if(a.a<b.a)
- return 1;
- else
- return 0;
- }
- int n,m;
- bool verf(int mij){
- int z,i;
- z=mij-1;i=1;
- while(z<m-1 && i<=n){
- if(i>v[z].a)
- break;
- i++;
- z=min(z+mij,m-1);
- }
- if(z<m-1 && i<=n)
- return 0;
- else
- return 1;
- }
- int main()
- {
- int st,dr,mij,d,rasp,i,vf,poz,j;
- cin>>n>>d>>m;
- for(i=0;i<m;i++){
- cin>>v[i].a;
- v[i].ind=i+1;
- v[i].a+=d;
- }
- sort(v,v+m,cmp);
- st=1;dr=1000000;rasp=mij=0;
- while(st<=dr){
- mij=(st+dr)/2;
- vf=verf(mij);
- if(vf==1){
- rasp=mij;
- dr=mij-1;
- }else{
- st=mij+1;
- }
- }
- cout<<rasp<<"\n";
- poz=0;
- for(i=0;i<n;i++){
- for(j=0;j<rasp && poz<m;j++){
- cout<<v[poz].ind<<" ";
- poz++;
- }
- cout<<"0\n";
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement