| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
|---|---|---|---|---|---|---|---|
| 1366015 | hadi7 | Job Scheduling (CEOI12_jobs) | C++17 | 183 ms | 20928 KiB |
//#pragma GCC optimize("Ofast,unroll-loops,inline")
#include <bits/stdc++.h>
#define int long long
#define double long double
using namespace std;
const int MaxN = 6e5+1 ;
void solve() {
int n , k , m ;
cin >> n >> k >> m ;
vector<pair<int,int>>a(m) ;
for (int i = 0 ; i < m ; i++) {
cin >> a[i].first ;
a[i].second = i + 1 ;
}
//cout << m << endl ;
sort(a.begin(),a.end()) ;
int l = 0 , r = 1e9 ;
while (l + 1 < r) {
int mid = l + (r - l) / 2 ;
int j = 0 ;
for (int i = 1 ; i <= n && j < m ; i++) {
if (a[j].first > i) {
continue;
}
int cnt = 0 ;
while (j < m && i - a[j].first <= k && cnt < mid) {
cnt++ ;
j++ ;
}
}
//cout << cnt << endl ;
if (j == m) {
r = mid ;
}
else {
l = mid ;
}
}
cout << r << endl ;
int j = 0 , cnt = 0 ;
for (int i = 1 ; i <= n && j < m ; i++) {
if (a[j].first > i) {
continue;
}
int cnt1 = 0 ;
while (j < m && i - a[j].first <= k && cnt1 < r) {
cout << a[j].second << " " ;
cnt1++ ;
j++ ;
}
cnt++ ;
cout << 0 << endl ;
}
//cout << cnt << endl ;
for (int i = cnt ; i < n ; i++) {
cout << 0 << endl ;
}
}
main() {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
int t = 1 ;
//cin >> t ;
while(t--) {
solve() ;
}
return 0;
}
컴파일 시 표준 에러 (stderr) 메시지
| # | 결과 | 실행 시간 | 메모리 | 채점기 출력 |
|---|---|---|---|---|
| 결과를 불러오는 중입니다… | ||||
