제출 #1342586

#제출 시각아이디문제언어결과실행 시간메모리
1342586gesp3011v2Job Scheduling (CEOI12_jobs)C++20
100 / 100
140 ms13884 KiB
#include "bits/stdc++.h"
#include <ext/pb_ds/assoc_container.hpp> 
#include <ext/pb_ds/tree_policy.hpp> 
using namespace __gnu_pbds;
using namespace std;
typedef tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update> ordered_set;
#define fi first
#define se second
#define pii pair<int,int>
#define yes cout<<"YES\n"
#define no cout<<"NO\n"
#define pb push_back
#define sz(x) (int)(x).size()
#define rsz resize
#define ass assign
void setIO(string name = ""){if(name.size()){ freopen((name + ".in").c_str(), "r", stdin);freopen((name + ".out").c_str(), "w", stdout);}}
#define F(i,l,r) for(int i=(l);i<(r);++i)
typedef long long ll;
template<typename T> using pqg = priority_queue<T, vector<T>, greater<T>>;
#define each(a,x) for(auto a:x)
#define FOR(i,a) for(int i=0;i<(a);i++)
#define ROF(i,a,b) for(int i=(b)-1;i>=(a);i--)
#define eb emplace_back
#define ft front()
template<class T> using V = vector<T>;
template<class T, size_t S> using AR = array<T, S>;
using str=string;

constexpr int pct(int x){return __builtin_popcount(x);}
constexpr ll pctll(ll x){return __builtin_popcountll(x);}
const int maxn=6000005;
const int mod=100000000;
const int mox=10000005;
const ll inf=4e18;

int n,d,m;
pii jobs[1000005];

bool cmp(const pii& a,const pii& b){
    return a.fi<b.fi;
}

bool check(int k){
    int idx=0;
    F(dd,1,n+1){
        int cnt=0;
        while(cnt<k && idx<m && jobs[idx].fi<=dd){
            if(jobs[idx].fi+d<dd)return 0;
            idx++;
            cnt++;
        }
    }
    return idx==m;
}

void solve(){
cin>>n>>d>>m;
FOR(i,m){
    cin>>jobs[i].fi;
    jobs[i].se=i+1;
}
sort(jobs,jobs+m,cmp);
int lo=1,hi=m,res=hi;
while(lo<=hi){
    int mid=lo+(hi-lo)/2;
    if(check(mid)){
        res=mid;
        hi=mid-1;
    }else lo=mid+1;
}
cout<<res<<'\n';
int idx=0;
F(dd,1,n+1){
    int cnt=0;
    while(cnt<res && idx<m && jobs[idx].fi<=dd){
        cout<<jobs[idx].se<<' ';
        idx++;
        cnt++;
    }
    cout<<"0\n";
}
}

signed main() {
    ios_base::sync_with_stdio(0);cin.tie(nullptr);
   // setIO("");

    int tt=1;
    //cin>>tt;
    while(tt--)solve();

    return 0;
}

컴파일 시 표준 에러 (stderr) 메시지

jobs.cpp: In function 'void setIO(std::string)':
jobs.cpp:16:54: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   16 | void setIO(string name = ""){if(name.size()){ freopen((name + ".in").c_str(), "r", stdin);freopen((name + ".out").c_str(), "w", stdout);}}
      |                                               ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
jobs.cpp:16:98: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   16 | void setIO(string name = ""){if(name.size()){ freopen((name + ".in").c_str(), "r", stdin);freopen((name + ".out").c_str(), "w", stdout);}}
      |                                                                                           ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...