답안 #743296

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
743296 2023-05-17T09:37:38 Z vjudge1 Job Scheduling (CEOI12_jobs) C++17
0 / 100
460 ms 58320 KB
#include<bits/stdc++.h>
#define int long long

using namespace std;

struct deads
{
    int day,work,dead;
    bool operator<(const deads&d2)const{
        if(day==d2.day) return work>d2.work;
        return day<d2.day;
    }
};

vector<deads> vc,copys;
int n,d,m,a;
int l = 1,ans = 1e14,r = 1e14;

signed main()
{
    ios_base::sync_with_stdio(0),cin.tie(0);
    cin>>n>>d>>m;
    for(int i = 1; i<=m; ++i){
        cin>>a;
        vc.push_back({a,i,a+d});
    }
    sort(vc.begin(), vc.end());
    for(auto [day,work,dead]:vc){
        copys.push_back({day,work,dead});
    }
    while(l<r){
        int mid = (l+r)>>1;
        int cnt = 0;
        bool ck = 0;
        int ps = 0;
        for(int i = 0; i<vc.size(); ++i){
            if(vc[i].day+ps>=vc[i].dead){
                ck = 1;
                break;
            }
            if(cnt==mid){
                cnt = 0;
                ps++;
            }
            ++cnt;
            if(ck) break;
        }
        if(ck){
            ans = min(ans,mid);
            l = mid+1;
        }
        else{
            r = mid;
        }
        for(int i = 0; i<copys.size(); ++i){
            vc[i] = copys[i];
        }
    }
    int k = ans-1;
    cout<<ans-1<<"\n";
    int cnt = 0,c = 0;
    for(auto [day,work,dead]:vc){
        if(cnt==k){
            cnt = 0;
            ++c;
            cout<<0<<"\n";
        }
        ++cnt;
        cout<<work<<" ";
    }
    if(c!=m) {
        cout<<"0\n";
        ++c;
    }
    for(int i = 0; i<n-c; ++i) cout<<0<<"\n";
}

Compilation message

jobs.cpp: In function 'int main()':
jobs.cpp:36:25: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<deads>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   36 |         for(int i = 0; i<vc.size(); ++i){
      |                        ~^~~~~~~~~~
jobs.cpp:55:25: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<deads>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   55 |         for(int i = 0; i<copys.size(); ++i){
      |                        ~^~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Incorrect 29 ms 7236 KB Output isn't correct
2 Incorrect 29 ms 7356 KB Output isn't correct
3 Incorrect 28 ms 7236 KB Output isn't correct
4 Incorrect 29 ms 7232 KB Output isn't correct
5 Incorrect 29 ms 7236 KB Output isn't correct
6 Incorrect 27 ms 7292 KB Output isn't correct
7 Incorrect 29 ms 7268 KB Output isn't correct
8 Incorrect 33 ms 7208 KB Output isn't correct
9 Incorrect 43 ms 7236 KB Output isn't correct
10 Incorrect 42 ms 7236 KB Output isn't correct
11 Incorrect 36 ms 7288 KB Output isn't correct
12 Incorrect 81 ms 14248 KB Output isn't correct
13 Incorrect 145 ms 25804 KB Output isn't correct
14 Incorrect 207 ms 28144 KB Output isn't correct
15 Incorrect 245 ms 30484 KB Output isn't correct
16 Runtime error 343 ms 51344 KB Memory limit exceeded
17 Runtime error 368 ms 53700 KB Memory limit exceeded
18 Runtime error 413 ms 55984 KB Memory limit exceeded
19 Runtime error 460 ms 58320 KB Memory limit exceeded
20 Runtime error 355 ms 53580 KB Memory limit exceeded