제출 #1095988

#제출 시각아이디문제언어결과실행 시간메모리
1095988yoav_sDynamic Diameter (CEOI19_diameter)C++17
7 / 100
133 ms10972 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; typedef vector<ll> v; typedef vector<v> vv; typedef vector<vv> vvv; typedef pair<ll, ll> p; typedef vector<p> vp; typedef vector<vp> vvp; typedef vector<vvp> vvvp; typedef pair<ll, p> tri; typedef vector<tri> vtri; typedef vector<vtri> vvtri; typedef vector<vvtri> vvvtri; typedef vector<bool> vb; typedef vector<vb> vvb; typedef vector<vvb> vvvb; #define f first #define s second #define pb push_back #define eb emplace_back #define all(v) (v).begin(),(v).end() const ll INF = 1e18; const ll mod = 1e9 + 7; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); ll n, q, w; cin >> n >> q >> w; vtri edges(n - 1); for (ll i = 0; i < n - 1; i++) { cin >> edges[i].s.f >> edges[i].s.s >> edges[i].f; edges[i].s.f--; edges[i].s.s--; } v weight(n - 1); for (ll i = 0; i < n - 1; i++) weight[i] = edges[i].f; multiset<ll,greater<ll>> weights; for (ll x: weight) weights.insert(x); ll last = 0; while (q--) { ll d, e; cin >> d >> e; d = (d + last) % (n - 1); e = (e + last) % w; weights.erase(weights.find(weight[d])); weight[d] = e; weights.insert(weight[d]); auto ptr = weights.begin(); last = *ptr; if (n > 2) { ptr++; last += *ptr; } 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...