제출 #1302757

#제출 시각아이디문제언어결과실행 시간메모리
1302757alex0152Job Scheduling (CEOI12_jobs)C++20
100 / 100
100 ms14920 KiB
#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int nMax=1e6+5,MOD=1e9+7;

int t,n,m,k,z,a,b,c,d,x,y,cnt,ans,rez,sum,poz,st,dr;
int v[nMax];
bool ok;
char ch;
string s;
map<int,int>mp;
vector<int>adj[nMax];
bool check(int val)
{
    int day=1;
    cnt=0;
    for(int i=1; i<=n-d; ++i)
    {
        if(i>day)
            day=i,cnt=0;
        for(auto it : adj[i])
        {
            if(i+d<day)
                return 0;
            cnt++;
            if(cnt==val)
                day++,cnt=0;
        }
    }
    return 1;
}
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0),cout.tie(0);

    cin>>n>>d>>m;
    for(int i=1; i<=m; ++i)
        cin>>v[i],adj[v[i]].push_back(i);
    st=1;
    dr=m;
    while(st<=dr)
    {
        int mid=st+(dr-st)/2;
        if(check(mid))
            ans=mid,dr=mid-1;
        else
            st=mid+1;
    }
    cout<<ans<<'\n';
    int day=1;
    cnt=0;
    for(int i=1;i<=n;++i)
    {
        if(i>day)
            cout<<0<<'\n',day=i,cnt=0;
            for(auto it : adj[i])
            {
                cout<<it<<" ";
                cnt++;
            if(cnt==ans)
                day++,cnt=0,cout<<0<<'\n';
            }
    }
    if(day==n)
        cout<<0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...