Submission #447032

#TimeUsernameProblemLanguageResultExecution timeMemory
447032yungyaoDynamic Diameter (CEOI19_diameter)C++17
7 / 100
200 ms6392 KiB
using namespace std;
#include <iostream>
#include <algorithm>
#include <queue>
#include <stack>
#include <deque>
#include <map>
#include <set>
#include <utility>
#include <memory.h>
#include <vector>
#include <bitset>

typedef pair<int,int> pii;
typedef long long LL;

#define iter(x) x.begin(),x.end()
#define F first
#define S second
#define pb push_back
#define mkp make_pair

#include <climits>
const int maxn = 1e5+100,mod = 0;

int mp[maxn],val[maxn];

int main(){
    ios_base::sync_with_stdio(false); cin.tie(0);
    int n,q,w;

    cin >> n >> q >> w;
    multiset <LL> mst;
    for (int i=0;i<n-1;++i){
        int u,v;
        LL c;

        cin >> u >> v >> c;
        mp[i] = max(u,v);
        val[max(u,v)] = c;
        mst.insert(c);
    }

    LL last = 0;
    while (q--){
        int d; LL e;
        cin >> d >> e;
        
        d = (last + d) % (n-1);
        e = (last + e) % w;
        mst.erase(mst.find(val[mp[d]]));
        val[mp[d]] = e;
        mst.insert(e);

        last = *prev(mst.end()) + (n == 2 ? 0 : *prev(prev(mst.end())));
        cout << last << '\n';
    }

    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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...