Submission #527069

#TimeUsernameProblemLanguageResultExecution timeMemory
527069LoboBridges (APIO19_bridges)C++17
16 / 100
657 ms5416 KiB
#include<bits/stdc++.h> using namespace std; const long long inf = (long long) 1e18 + 10; const int inf1 = (int) 1e9 + 10; #define int long long #define dbl long double #define endl '\n' #define sc second #define fr first #define mp make_pair #define pb push_back #define all(x) x.begin(), x.end() #define maxn 55000 int n, m, q, tr[4*maxn], u[maxn], v[maxn], w[maxn]; void att(int no, int l, int r, int pos, int val) { if(l > pos || r < pos) return; else if(l == r) { tr[no] = val; } else { int f1 = 2*no; int f2 = 2*no+1; int mid = (l+r)/2; att(f1,l,mid,pos,val); att(f2,mid+1,r,pos,val); tr[no] = min(tr[f1],tr[f2]); } } int qrr(int no, int l, int r, int L, int R) { if(l > R || r < L) return inf; else if(l >= L && r <= R) { return tr[no]; } else { int f1 = 2*no; int f2 = 2*no+1; int mid = (l+r)/2; return min(qrr(f1,l,mid,L,R),qrr(f2,mid+1,r,L,R)); } } void solve() { cin >> n >> m; for(int i = 1; i <= m; i++) { cin >> u[i] >> v[i] >> w[i]; } cin >> q; for(int i = 1; i <= n; i++) { att(1,1,n-1,i,w[i]); } for(int i = 1; i <= q; i++) { int op; cin >> op; if(op == 1) { int id, val; cin >> id >> val; att(1,1,n-1,id,val); } else { int w1, v; cin >> v >> w1; int ans = 0; //busca binaria na seg int l = 1; int r = v-1; int ans1 = 0; while(l <= r) { int mid = (l+r)/2; // cout << v << " " << w1 << " " << mid << " " << qrr(1,1,n-1,1,mid) << endl; if(qrr(1,1,n-1,mid,v-1) >= w1) { ans1 = v-mid; r = mid-1; } else l = mid+1; } l = v; r = n-1; int ans2 = 0; while(l <= r) { int mid = (l+r)/2; // cout << v << " " << w1 << " " << mid << " " << qrr(1,1,n-1,v,mid) << endl; if(qrr(1,1,n-1,v,mid) >= w1) { ans2 = mid-v+1; l = mid+1; } else r = mid-1; } cout << ans1+ans2+1 << endl; // cout << ans1 << " " << ans2 << endl; } } } int32_t main() { ios::sync_with_stdio(false); cin.tie(0); // freopen("in.in", "r", stdin); //freopen("out.out", "w", stdout); int tt = 1; // cin >> tt; while(tt--) solve(); }

Compilation message (stderr)

bridges.cpp: In function 'void solve()':
bridges.cpp:73:17: warning: unused variable 'ans' [-Wunused-variable]
   73 |             int ans = 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...