Submission #56443

#TimeUsernameProblemLanguageResultExecution timeMemory
56443BatrrJob Scheduling (CEOI12_jobs)C++14
0 / 100
706 ms33792 KiB
#include <bits/stdc++.h>

#define ll long long                   
#define f first 
#define s second 
#define pb push_back               
#define mp make_pair 
#define o cout<<"BUG"<<endl;
#define IOS ios_base::sync_with_stdio(0);
using namespace std;                    
const ll maxn=1e6+123,inf=1e18,mod=1e9+7;
int n,m,d,b[maxn];
pair<int,int>a[maxn];
bool check(int mx,bool flag){
    queue<int>q;
    for(int i=1,j=0;i<=n;i++){
        while(j<m && a[j].f==i)
            q.push(a[j++].s);
        int cur=mx;
        while(!q.empty() && cur){
            if(b[q.front()]+d<i)
                return 0;
            if(flag)
                cout<<q.front()<<" ";
            q.pop();
            cur--;
        }
        if(flag)
            cout<<0<<endl;
    }
    return q.empty();
}
int main(){
    #ifdef LOCAL
        freopen ("test.in", "r", stdin);
    #endif
    IOS
    cin>>n>>d>>m;
    for(int i=0;i<m;i++){
        cin>>a[i].f;
        a[i].s=i+1;
        b[i+1]=a[i].f;
    }
    sort(a,a+m);
    int l=1,r=1e6;
    while(l<=r){
        int m=(l+r)/2;
        if( !check(m,0) )
            l=m+1;
        else
            r=m-1;
    }
    check(l,1);
}
#Verdict Execution timeMemoryGrader output
Fetching results...