Submission #1281338

#TimeUsernameProblemLanguageResultExecution timeMemory
1281338Faisal_SaqibBridges (APIO19_bridges)C++20
16 / 100
714 ms2584 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long const int N=1e5+10,X=(1<<18); // int par[N],sz[N],ans[N]; // int get(int x) // { // return (par[x]==x?x:par[x]=get(par[x])); // } // void join(int x,int y) // { // x=get(x); // y=get(y); // if(x==y)return; // sz[x]+=sz[y]; // par[y]=x; // } // vector<pair<ll,ll>> ma[N]; // bool vis[N]; // ll w[N]; // ll sz=0,cw=0; // void dfs(int x,int p=-1) // { // vis[x]=1; // sz++; // for(auto sza:ma[x]) // { // int y=sza.second,i=sza.first; // if(y==p or vis[y])continue; // if(w[i]>=cw) // { // dfs(y,x); // } // } // } int seg[(1<<19)+2]; void Set(int i,int w) { seg[i+X]=w; // cout<<i+X<<' '; for(i=(i+X)>>1;i>0;i>>=1) { // cout<<i<<' '; seg[i]=min(seg[2*i],seg[2*i+1]); } // cout<<endl; } int getmin(int ql,int qr,int l=0,int r=X-1,int v=1) { if(r<ql or qr<l) return 1e9+10; if(ql<=l and r<=qr) { return seg[v]; } int mid=(l+r)>>1; return min(getmin(ql,qr,l,mid,2*v),getmin(ql,qr,mid+1,r,2*v+1)); } int main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n,m; cin>>n>>m; for(int i=0;i<m;i++) { int x,y,w; cin>>x>>y>>w; Set(i,w); } int q; cin>>q; for(int i=0;i<q;i++) { int t; cin>>t; ll s,wq; cin>>s>>wq; s--; if(t==1) { Set(s,wq); } else { ll l=s-1,r=m; while(l+1<r) { ll mid=(l+r)/2; if(getmin(s,mid)>=wq) { l=mid; } else { r=mid; } } ll cur=(l-s+2); l=-1,r=s; while(l+1<r) { ll mid=(l+r)/2; if(getmin(mid,s-1)>=wq) { r=mid; } else { l=mid; } } cout<<cur+(s-r)<<endl; //[s,l+1] } // edg.push_back({w,-1,i,s}); } // sort(rbegin(edg),rend(edg)); // for(auto ty:edg) // { // if(ty[1]==-1) // { // // query // ans[ty[2]]=sz[get(ty[3])]; // } // else // { // // edge // join(ty[1],ty[2]); // } // } // for(int i=0;i<q;i++) // { // cout<<ans[i]<<' '; // } // cout<<endl; }
#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...