제출 #917989

#제출 시각아이디문제언어결과실행 시간메모리
917989AiperiiiJob Scheduling (CEOI12_jobs)C++14
0 / 100
245 ms38872 KiB
#include <bits/stdc++.h>
#define int long long
#define ff first
#define ss second
#define pb push_back
#define all(x) x.begin(),x.end()
using namespace std;
int ans=0;
void to_ternary(int n){
   if(n==0)return ;
   int x=n%3;
   ans+=x;
   n/=3;
   to_ternary(n);
}
signed main(){
   ios_base::sync_with_stdio();
   cin.tie(0);cout.tie(0);
   int n,d,m;
   cin>>n>>d>>m;
   vector <pair <int,int> > v;
   for(int i=1;i<=m;i++){
      int x;cin>>x;
      v.pb({x,i});
   }
   sort(all(v));
   
   int l=0;
   int r=10;
   while(l+1<r){
      int md=(l+r)/2;
      deque <int> day;
      for(auto x : v){
         day.pb(x.ff);
      }
      for(int i=1;i<=n;i++){
         int cnt=md;
         while(day.size()!=0 && day.front()>=i-d && day.front()<=i && cnt>0){
            day.pop_front();
            cnt--;
         }
      }
      if(day.size()==0)r=md;
      else l=md;
   }
   deque <int> day,ind;
   for(auto x : v){
      day.pb(x.ff);
      ind.pb(x.ss);
   }
   vector <vector <int> > ans(n+1);
   cout<<r<<"\n";
   for(int i=1;i<=n;i++){
      int cnt=r;
      while(day.size()!=0 && day.front()>=i-d && day.front()<=i && cnt>0){
         day.pop_front();
         ans[i].pb(ind.front());
         ind.pop_front();
         cnt--;
      }
      ans[i].pb(0);
   }
   for(int i=1;i<=n;i++){
      for(auto x : ans[i])cout<<x<<" ";
      cout<<"\n";
   }
}
/*
8 2 12
1 2 4 2 1 3 5 6 2 3 6 4
 */
#Verdict Execution timeMemoryGrader output
Fetching results...