| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
|---|---|---|---|---|---|---|---|
| 1342586 | gesp3011v2 | Job Scheduling (CEOI12_jobs) | C++20 | 140 ms | 13884 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) 메시지
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
