Submission #1142414

#TimeUsernameProblemLanguageResultExecution timeMemory
1142414am_aadvikElection Campaign (JOI15_election_campaign)C++20
10 / 100
143 ms12560 KiB
#include <iostream>
#include<algorithm>
#include<vector>
using namespace std;

int main()
{
    int n, v; cin >> n;
    for (int i = 1; i < n; ++i)
        cin >> v >> v;

    int m; cin >> m;
    vector<vector<int>> s, e;
    vector<int> dp(m), mx(m + 1), idx(m);
    for (int i = 0; i < m; ++i) {
        int x, y, z; cin >> x >> y >> z;
        if (x > y) swap(x, y);
        s.push_back({ x, y, z, i });
        e.push_back({ y, x, z, i });
    }

    sort(s.begin(), s.end());
    for (int i = m - 1; i >= 0; --i)
        idx[s[i][3]] = i, dp[i] = s[i][2], mx[i] = max(mx[i + 1], s[i][2]);

    sort(e.begin(), e.end());

    int ans = 0;
    for (int i = m - 1; i >= 0; --i) {
        vector<int> x = { s[i][1] + 1, 0, 0, 0 };
        auto it = lower_bound(s.begin(), s.end(), x);
        mx[i] = max(mx[i], mx[i + 1]);
        if (it == s.end()) continue;
        int ix = idx[(*it)[3]];
        dp[i] = s[i][2] + mx[ix];
        mx[i] = max(dp[i], mx[i]);
        ans = max(ans, dp[i]);
    }
    cout << mx[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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...