Submission #983175

#TimeUsernameProblemLanguageResultExecution timeMemory
983175vjudge1Bridges (APIO19_bridges)C++17
29 / 100
361 ms13000 KiB
#include<bits/stdc++.h> #define sz size() #define ll long long using namespace std; const ll N = 400400; ll s[N], T = 1; ll get(ll l, ll r, ll res = 1e18) { l += T - 1, r += T - 1; for(; l <= r; l >>= 1, r >>= 1) { if(l % 2 == 1) res = min(res, s[l++]); if(r % 2 == 0) res = min(res, s[r--]); } return res; } void upd(ll i, ll x) { i += T - 1; s[i] = x; for(; i > 1; i >>= 1) s[i >> 1] = min(s[i], s[i ^ 1]); } void solve() { ll n, m, Q, i, j, k; cin >> n >> m; while(T < m) T *= 2; vector<pair<ll, ll>> v[n + 1]; ll x[m + 1], y[m + 1], z[m + 1]; for(i = 1; i <= m; ++i) { ll a, b, c; cin >> a >> b >> c; v[a].push_back({b, c}); v[b].push_back({a, c}); x[i] = a, y[i] = b, z[i] = c; } cin >> Q; if(n <= 1000 && m <= 1000 && Q <= 10000) { while(Q--) { ll t, u, k; cin >> t >> u >> k; if(t == 1) { for(auto &i : v[x[u]]) if(i.first == y[u] && i.second == z[u]) { i.second = k; break; } for(auto &i : v[y[u]]) if(i.first == x[u] && i.second == z[u]) { i.second = k; break; } z[u] = k; continue; } ll us[n + 1] = {}; queue<ll> q; q.push(u); us[u] = 1; ll ans = 1; while(q.sz) { ll s = q.front(); q.pop(); for(auto [t, c] : v[s]) { if(us[t] || c < k) continue; q.push(t); us[t] = 1; ++ans; } } cout << ans << '\n'; } return; } for(i = 1; i <= m; ++i) upd(i, z[i]); while(Q--) { ll t, u, k; cin >> t >> u >> k; if(t == 1) { upd(u, k); continue; } ll ans = 1; ll l = u + 1, r = n; while(l <= r) { ll mid = (l + r) / 2; ll c = get(u, mid - 1); if(c >= k && (mid == n || get(u, mid) < k)) { ans += mid - u; break; } if(c >= k) l = mid + 1; else r = mid - 1; } l = 1, r = u - 1; while(l <= r) { ll mid = (l + r) / 2; ll c = get(mid, u - 1); if(c >= k && (mid == 1 || get(mid - 1, u - 1) < k)) { ans += u - mid; break; } if(c >= k) r = mid - 1; else l = mid + 1; } cout << ans << '\n'; } } signed main() { ios_base::sync_with_stdio(0); cin.tie(0), cout.tie(0); solve(); }

Compilation message (stderr)

bridges.cpp: In function 'void solve()':
bridges.cpp:29:20: warning: unused variable 'j' [-Wunused-variable]
   29 |     ll n, m, Q, i, j, k;
      |                    ^
bridges.cpp:29:23: warning: unused variable 'k' [-Wunused-variable]
   29 |     ll n, m, Q, i, j, k;
      |                       ^
#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...