Submission #550227

#TimeUsernameProblemLanguageResultExecution timeMemory
550227epiforJob Scheduling (CEOI12_jobs)C++17
10 / 100
450 ms24324 KiB
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;

#define ll long long

ll n,d,m;
ll maks = 0;
vector<pair<ll,ll>> v;

bool fjk(int k){
    int dan = 0;
    for(int i = 0;i<m;i++){
        if(i%k==0){
            dan++;
        }
        if(dan>v[i].first+d){
            return false;
        }
        
    }
    return true;
}
void fjk1(int k){
    int dan = 0;
    for(int i = 0;i<m;i++){
        if(i%k==0){
            dan++;
            if(i!=0){
            cout << 0 << endl;
                }
                }
        cout << v[i].second+1 << " ";
    }
    cout << 0 << endl;
    if(m%k<n){
        for(int i =0;i<m%k;i++){
            cout << 0 << endl;
        }
    }
}

int main() {
  cin >> n >> d >> m;
  ll kl;
  for(int i =0;i<m;i++){
      cin>>kl;
      v.push_back({kl,i});
  }
    sort(v.begin(),v.end());
  ll a = 1, b=m;
  while(b>=a){
      ll mid = b+(a-b)/2;

      if(fjk(mid)==true){
          b=mid-1;
      }else{
          a=mid+1;
      }
  }
    cout << b+1 << endl;
    fjk1(b+1);
}
#Verdict Execution timeMemoryGrader output
Fetching results...