Submission #1187967

#TimeUsernameProblemLanguageResultExecution timeMemory
1187967alwaus424Art Exhibition (JOI18_art)C++20
100 / 100
320 ms12084 KiB
#include <iostream> #include <vector> #include <algorithm> #include <climits> using namespace std; struct Artwork { long long size; long long value; }; bool compareArtworks(const Artwork& a, const Artwork& b) { return a.size < b.size; } int main() { int n; cin >> n; vector<Artwork> artworks(n); for (int i = 0; i < n; ++i) { cin >> artworks[i].size >> artworks[i].value; } sort(artworks.begin(), artworks.end(), compareArtworks); vector<long long> prefix_sums(n + 1, 0); for (int i = 0; i < n; ++i) { prefix_sums[i + 1] = prefix_sums[i] + artworks[i].value; } long long max_diff = LLONG_MIN; long long prefix_min = LLONG_MAX; for (int r = 0; r < n; ++r) { prefix_min = min(prefix_min, prefix_sums[r] - artworks[r].size); // P[l-1] - A[l] max_diff = max(max_diff, (prefix_sums[r + 1] - artworks[r].size) - prefix_min); // (P[r] - A[r]) - min(P[l-1] - A[l]) } cout << max_diff << endl; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...