Submission #969730

# Submission time Handle Problem Language Result Execution time Memory
969730 2024-04-25T14:06:14 Z BestCrazyNoob Meetings (IOI18_meetings) C++17
0 / 100
5500 ms 7368 KB
#include "meetings.h"
#include <vector>
#include <algorithm>

using namespace std;
using ll = long long;
constexpr int INF = 2e9;

ll solve(vector<int> H) {
    vector<ll> ans(H.size(), 0);
    vector<int> s;
    int curr = 0;
    for (int i = 0; i < H.size(); i++) {
        while (s.size() >= 1 && H[i] > H[s.back()]) {
            const int d = s.size() == 1 ? s.back() + 1 : s.back() - s[s.size()-2];
            curr += d * (H[i] - H[s.back()]);
            s.pop_back();
        }
        s.push_back(i);
        curr += H[i];
        ans[i] = curr;
    }
    curr = 0;
    s.resize(0);
    for (int i = H.size()-1; i >= 0; i--) {
        while (s.size() >= 1 && H[i] > H[s.back()]) {
            const int d = s.size() == 1 ? H.size() - s.back() : s[s.size()-2] - s.back();
            curr += d * (H[i] - H[s.back()]);
            s.pop_back();
        }
        s.push_back(i);
        ans[i] += curr;
        curr += H[i];
    }
    return *min_element(ans.begin(), ans.end());
}

vector<long long> minimum_costs(vector<int> H, vector<int> L, vector<int> R) {
    vector<ll> C(L.size());
    for (int q = 0; q < L.size(); q++) {
        C[q] = solve(vector<int>(H.begin() + L[q], H.begin() + R[q] + 1));
    }
    return C;
}

Compilation message

meetings.cpp: In function 'll solve(std::vector<int>)':
meetings.cpp:13:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   13 |     for (int i = 0; i < H.size(); i++) {
      |                     ~~^~~~~~~~~~
meetings.cpp: In function 'std::vector<long long int> minimum_costs(std::vector<int>, std::vector<int>, std::vector<int>)':
meetings.cpp:40:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   40 |     for (int q = 0; q < L.size(); q++) {
      |                     ~~^~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
2 Incorrect 1 ms 344 KB Output isn't correct
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
2 Incorrect 1 ms 344 KB Output isn't correct
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 348 KB Output is correct
2 Correct 1619 ms 2736 KB Output is correct
3 Execution timed out 5533 ms 7368 KB Time limit exceeded
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 348 KB Output is correct
2 Correct 1619 ms 2736 KB Output is correct
3 Execution timed out 5533 ms 7368 KB Time limit exceeded
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
2 Incorrect 1 ms 344 KB Output isn't correct
3 Halted 0 ms 0 KB -