Submission #696428

#TimeUsernameProblemLanguageResultExecution timeMemory
696428cfjasonJob Scheduling (CEOI12_jobs)C++17
90 / 100
1093 ms10604 KiB
#include <bits/stdc++.h>

using namespace std;

int main(int argc, char const *argv[])
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    int n, d, m;
    cin >> n >> d >> m;
    vector<vector<int>> requestsByDay(n);
    for (int i = 0; i < m; i++)
    {
        int day;
        cin >> day;
        requestsByDay[day-1].push_back(i+1);
    }
    int lower = 0, upper = m+1;
    while (lower + 1 < upper)
    {
        int mid = (lower + upper) / 2;
        int reqIndex = 0;
        priority_queue<array<int, 2>, vector<array<int, 2>>, greater<>> line;
        bool valid = true;
        for (int i = 0; i < n; i++)
        {
            for (int j = 0; j < requestsByDay[i].size(); j++)
                line.push(array<int, 2>{i, requestsByDay[i][j]});
            for (int j = 0; j < mid; j++)
            {
                if (line.size())
                {
                    if (i - line.top()[0] > d)
                    {
                        valid = false;
                        break;
                    }
                    line.pop();
                }
                else
                {
                    break;
                }
            }
            if (!valid)
                break;
        }
        if (line.size())
            valid = false;

        if(valid){
            upper = mid;
        }
        else{
            lower = mid;
        }
    }
    cout << upper << endl;
    priority_queue<array<int, 2>, vector<array<int, 2>>, greater<>> line;
    int mid = upper;
    for (int i = 0; i < n; i++)
        {
            for (int j = 0; j < requestsByDay[i].size(); j++)
                line.push(array<int, 2>{i, requestsByDay[i][j]});
            for (int j = 0; j < mid; j++)
            {
                if (line.size())
                {
                    cout << to_string(line.top()[1]) << " ";
                    line.pop();
                }
                else
                {
                    break;
                }
            }
            cout << "0" << endl;
        }
    return 0;
}

Compilation message (stderr)

jobs.cpp: In function 'int main(int, const char**)':
jobs.cpp:27:31: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   27 |             for (int j = 0; j < requestsByDay[i].size(); j++)
      |                             ~~^~~~~~~~~~~~~~~~~~~~~~~~~
jobs.cpp:22:13: warning: unused variable 'reqIndex' [-Wunused-variable]
   22 |         int reqIndex = 0;
      |             ^~~~~~~~
jobs.cpp:63:31: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   63 |             for (int j = 0; j < requestsByDay[i].size(); j++)
      |                             ~~^~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...