Submission #1108978

# Submission time Handle Problem Language Result Execution time Memory
1108978 2024-11-05T18:17:25 Z yazansh Job Scheduling (CEOI12_jobs) C++17
80 / 100
299 ms 44988 KB
/*************
  the author:     
  shimutski_zoro   
************ */
#include <bits/stdc++.h>
using namespace std;
#define yon(x) cout<<((x)?"YES":"NO");
#define all(x) x.begin(),x.end()
#define rall(x) x.rbegin(),x.rend()
#define ff first 
#define ss second
#define em emplace_back
#define rep(i,j,k) for(int i=j;i<=k;i++)
#define per(i,j,k) for(int i=k;i>=j;i--)
#define forp(x,y,a) for(auto &[x,y]:(a))
typedef long long  ll;
typedef pair<ll,ll> pll;
typedef vector<ll> vl;
typedef vector<pll> vpl;
typedef vector<vl> vvl;
typedef vector<vpl> vvpl;
typedef vector<string> vs;
typedef deque<ll> dl;
const int mod=1e9+7;
ll inf =1e18+1;
const int M=1e6;
const int N=1e3+1; 
const ll dx[]={1,0,-1,0},dy[]={0,1,0,-1};
void solve(){
ll n,m,d;
cin>>n>>d>>m;
vl a(m);
rep(i,0,m-1)cin>>a[i];
vl idx(m);
iota(all(idx),0LL);
sort(all(idx),[&](ll i ,ll j){return a[i]<a[j];});
sort(all(a));
vvl tmp(n+1);
 function<bool(ll)>check=[&](ll r)->bool{
  tmp=vvl (n+1);
ll cnt=0;
rep(i,1,n){
  rep(j,1,r){
    if(a[cnt]>i)
    break;
if(a[cnt]+d>=i){
//cout<<cnt<<" "<<a[cnt]<<" "<<idx[cnt]<<" "<<i<<endl;
  tmp[i].em(idx[cnt++]+1);
}else return 0;
if(cnt==m)return 1;
  }
 
}
return 0;
 
 };
 // 1 1 2 2 2 3 3 4 4 5 6 6
 //0 4 1 3 8 
 vvl v(n+1);
 ll lo=1,hi=m;
 ll ans=m;
 while(lo<=hi){
  ll mid= lo + (hi-lo)/2;
if(check(mid)){
  hi=mid-1;
  ans=mid;
  v=tmp;
}else{
  lo=mid+1;
}
 }
cout<<ans<<endl;
//vvl v(n+1);
rep(i,1,n){
  for(auto it:v[i]){
    cout<<it<<" ";
  }
  cout<<0<<"\n";
}
}
 
 
signed main()
{
 
    ios_base::sync_with_stdio(NULL);
    cin.tie(nullptr);
    cout.tie(nullptr);
    #ifdef Usaco
    string f="herding";
    freopen((f+".in").c_str(),"r",stdin);
    freopen((f+".out").c_str(),"w",stdout);
    #endif
   int t = 1;
//cin >> t;
    while (t--)
    {
      solve();
    //  if(t>0)
      //cout<<endl;
    }
}
/*
*/
# Verdict Execution time Memory Grader output
1 Correct 31 ms 5476 KB Output is correct
2 Correct 31 ms 5220 KB Output is correct
3 Correct 31 ms 5232 KB Output is correct
4 Correct 31 ms 5400 KB Output is correct
5 Correct 31 ms 5228 KB Output is correct
6 Correct 31 ms 5276 KB Output is correct
7 Correct 31 ms 5148 KB Output is correct
8 Correct 31 ms 5232 KB Output is correct
9 Correct 41 ms 13592 KB Output is correct
10 Correct 39 ms 14072 KB Output is correct
11 Correct 29 ms 4688 KB Output is correct
12 Correct 69 ms 8876 KB Output is correct
13 Correct 82 ms 14064 KB Output is correct
14 Correct 155 ms 19144 KB Output is correct
15 Correct 147 ms 21264 KB Output is correct
16 Correct 202 ms 26084 KB Output is correct
17 Runtime error 283 ms 33956 KB Memory limit exceeded
18 Runtime error 245 ms 34912 KB Memory limit exceeded
19 Runtime error 299 ms 44988 KB Memory limit exceeded
20 Runtime error 264 ms 33720 KB Memory limit exceeded