# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
939888 | lucascgar | Job Scheduling (CEOI12_jobs) | C++17 | 509 ms | 23392 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
// #pragma GCC optimize("O3,unroll-loops")
// #pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt")
using namespace std;
mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count()); // overclock random
typedef pair<int,int> pii;
typedef pair<long long, long long> pll;
typedef pair<double, double> pdd;
const int MAXN = 1e6+10;
int dy[MAXN];
signed main(){
std::ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
// freopen("test.in", "r", stdin);
// freopen("test.out", "w", stdout);
// cout << fixed << setprecision(12);
int n, d, m;
cin >> n >> d >> m;
vector<pii> sc;
for (int i=1;i<=m;i++){
cin >> dy[i];
sc.push_back({dy[i], i});
}
sort(sc.begin(), sc.end());
int in = 0, fi = 1e6, me;
vector<int> ans;
while (in<=fi){
me = (in+fi)/2;
int ct = 0, dt = 0;
bool v = 1;
vector<int> td;
for (int i=1;i<=n;i++){
while (ct<sc.size() && sc[ct].first == i) td.push_back(sc[ct++].second);
for (int j=0;j<me;j++){
if (dt < td.size()) dt++;
else break;
}
if (dt < td.size() && dy[td[dt]]+d <= i){
v = 0;
break;
}
}
if (v){
fi = me-1;
ans = td;
}
else in = me+1;
}
cout << fi+1 << "\n";
int j = 0;
for (int i=0;i<n;i++){
for (int k=0;k<fi+1;k++) if (j < ans.size()) cout << ans[j++] << " ";
cout << "0\n";
}
return 0;
}
컴파일 시 표준 에러 (stderr) 메시지
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |