답안 #416743

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
416743 2021-06-02T21:26:52 Z winstonyin Job Scheduling (CEOI12_jobs) C++11
0 / 100
479 ms 20616 KB
#include <string>
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <algorithm>
#include <vector>
#include <cmath>
#include <array>
#include <map>
#include <set>
#include <fstream>
#include <unordered_map>
#include <queue>
using namespace std;
using pi = pair<int, int>;
using pd = pair<double, double>; 
#define ll long long
#define all(x) (x).begin(), (x).end()
ll  days, delay, requests;
vector<pair<ll,ll>> seq;
bool works(ll  machines) {
    if(days*machines < requests) {
        return false;
    }
    ll  cur_day = 0; ll  cur_req = 0;
    while(cur_day < days && cur_req < requests) {
        for(ll  j = 0; j < machines; j++) {
            if(cur_req == requests) {
                break;
            }
            if(seq[cur_req].first <= cur_day+1) {
                if(cur_day+1 - seq[cur_req].first <= delay) {
                    cur_req++;
                }
                else {
                    return false;
                }
            }
            else {
                break;
            }
        }
        cur_day++;
    }
    return cur_req == requests;
}
bool p_works(ll  machines) {
    if(days*machines < requests) {
        return false;
    }
    ll  cur_day = 0; ll  cur_req = 0;
    while(cur_day < days && cur_req < requests) {
        for(ll  j = 0; j < machines; j++) {
            if(cur_req == requests) {
                break;
            }
            if(seq[cur_req].first <= cur_day+1) {
                if(cur_day+1 - seq[cur_req].first <= delay) {
                    cout << seq[cur_req].second << " ";
                    cur_req++;
                }
                else {
                    return false;
                }
            }
            else {
                break;
            }
        }
        cout << 0 << endl;
        cur_day++;
    }
    return cur_req == requests;
}
int  main() {
    cin >> days >> delay >> requests;
    for(ll  i = 0; i < requests; i++) {
        ll  day; cin >> day;
        seq.push_back({day, i+1});
    }
    sort(all(seq));
    ll  a = 1, b = 1e9;
    ll  ans;
    while(a <= b) {
        ll  mid = (a+b)/2;
        // cout << a << " " << b << endl;
        if(works(mid)) {
            ans = mid;
            b = mid-1;
        }
        else {
            a = mid+1;
        }
    }
    cout << ans;
    p_works(ans);
}

Compilation message

jobs.cpp: In function 'int main()':
jobs.cpp:96:12: warning: 'ans' may be used uninitialized in this function [-Wmaybe-uninitialized]
   96 |     p_works(ans);
      |     ~~~~~~~^~~~~
# 결과 실행 시간 메모리 Grader output
1 Incorrect 42 ms 2480 KB Output isn't correct
2 Incorrect 42 ms 2492 KB Output isn't correct
3 Incorrect 41 ms 2456 KB Output isn't correct
4 Incorrect 42 ms 2504 KB Output isn't correct
5 Incorrect 41 ms 2496 KB Output isn't correct
6 Incorrect 42 ms 2564 KB Output isn't correct
7 Incorrect 41 ms 2504 KB Output isn't correct
8 Incorrect 42 ms 2504 KB Output isn't correct
9 Incorrect 47 ms 2480 KB Expected EOLN
10 Incorrect 47 ms 2488 KB Expected EOLN
11 Incorrect 52 ms 2488 KB Expected EOLN
12 Incorrect 104 ms 4792 KB Expected EOLN
13 Incorrect 161 ms 8580 KB Expected EOLN
14 Incorrect 244 ms 9280 KB Expected EOLN
15 Incorrect 264 ms 11680 KB Expected EOLN
16 Incorrect 356 ms 16704 KB Expected EOLN
17 Incorrect 429 ms 16796 KB Expected EOLN
18 Incorrect 429 ms 18428 KB Expected EOLN
19 Incorrect 479 ms 20616 KB Expected EOLN
20 Incorrect 432 ms 16708 KB Expected EOLN