Submission #742974

#TimeUsernameProblemLanguageResultExecution timeMemory
742974vjudge1Job Scheduling (CEOI12_jobs)C++17
0 / 100
1092 ms29252 KiB
#include<bits/stdc++.h>

using namespace std;

struct deads
{
    int day,work,dead;
    bool operator<(const deads&d2)const{
        return day<d2.day;
    }
};

vector<deads> vc,copys;
int n,d,m,a,l = 1,r = 1e9,ans = 1e9+7;

int main()
{
    ios_base::sync_with_stdio(0),cin.tie(0);
    cin>>n>>d>>m;
    for(int i = 1; i<=m; ++i){
        cin>>a;
        vc.push_back({a,i,a+d});
    }
    sort(vc.begin(), vc.end());
    for(auto [day,work,dead]:vc){
        copys.push_back({day,work,dead});
    }
    while(l<r){
        int mid = (l+r)>>1;
        int cnt = 0;
        bool ck = 0;
        for(int i = 0; i<vc.size(); ++i){
            if(vc[i].day==vc[i].dead){
                ck = 1;
                break;
            }
            ++cnt;
            if(cnt==mid){
                cnt = 0;
                for(int j = i+1; j<vc.size(); ++j){
                    vc[j].day++;
                    if(vc[j].day==vc[j].dead){
                        ck = 1;
                        break;
                    }
                }
            }
            if(ck) break;
        }
        if(ck) l = mid+1;
        else r = mid;
        vc = copys;
    }
    int k = m/l+(m%l!=0);
    cout<<k<<"\n";
    int cnt = 0,c = 0;
    for(auto [day,work,dead]:vc){
        if(cnt==k){
            cnt = 0;
            ++c;
            cout<<0<<"\n";
        }
        ++cnt;
        cout<<work<<" ";
    }
    if(c!=m) cout<<0<<"\n";
    for(int i = 0; i<n-l; ++i) cout<<0<<"\n";
}

Compilation message (stderr)

jobs.cpp: In function 'int main()':
jobs.cpp:32:25: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<deads>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   32 |         for(int i = 0; i<vc.size(); ++i){
      |                        ~^~~~~~~~~~
jobs.cpp:40:35: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<deads>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   40 |                 for(int j = i+1; j<vc.size(); ++j){
      |                                  ~^~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...