답안 #743286

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
743286 2023-05-17T09:31:30 Z vjudge1 Job Scheduling (CEOI12_jobs) C++17
0 / 100
466 ms 58304 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;
            }
            ++cnt;
            if(cnt==mid){
                cnt = 0;
                ps++;
            }
            if(ck) break;
        }
        if(ck){
            l = mid+1;
        }
        else{
            ans = min(ans,mid);
            r = mid;
        }
        for(int i = 0; i<copys.size(); ++i){
            vc[i] = copys[i];
        }
    }
    int k = m/ans;
    cout<<k<<"\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 36 ms 7236 KB Output isn't correct
2 Incorrect 37 ms 7240 KB Output isn't correct
3 Incorrect 38 ms 7236 KB Output isn't correct
4 Incorrect 41 ms 7272 KB Output isn't correct
5 Incorrect 50 ms 7236 KB Output isn't correct
6 Incorrect 44 ms 7208 KB Output isn't correct
7 Incorrect 36 ms 7264 KB Output isn't correct
8 Incorrect 44 ms 7236 KB Output isn't correct
9 Incorrect 51 ms 7304 KB Output isn't correct
10 Incorrect 49 ms 7240 KB Output isn't correct
11 Incorrect 40 ms 7304 KB Output isn't correct
12 Incorrect 91 ms 14220 KB Output isn't correct
13 Incorrect 154 ms 25824 KB Output isn't correct
14 Incorrect 221 ms 28140 KB Output isn't correct
15 Incorrect 289 ms 30484 KB Output isn't correct
16 Runtime error 331 ms 51276 KB Memory limit exceeded
17 Runtime error 354 ms 53700 KB Memory limit exceeded
18 Runtime error 400 ms 55924 KB Memory limit exceeded
19 Runtime error 466 ms 58304 KB Memory limit exceeded
20 Runtime error 358 ms 53680 KB Memory limit exceeded