Submission #1366722

#TimeUsernameProblemLanguageResultExecution timeMemory
1366722hmms127Bridges (APIO19_bridges)C++20
16 / 100
344 ms5144 KiB
#include <regex>

#include "bits/stdc++.h"
using namespace std;
#define f1(n) for(int i=0;i<n;i++)
#define f2(m,n,q) for(int i=m;i<n;i+=q)
#define int long long
#define pb push_back
constexpr int N=3e5+5,inf=1e18;
using pr=pair<int,int>;
using ar=array<int,3>;
struct segtree {
    vector<int>seg;
    segtree(int n) {
        seg.resize(n*4,inf);
    }
    void update(int l,int r,int node,int idx,int val) {
        if (l==r){seg[node]=val;return;}
        int mid=(l+r)/2;
        if (idx<=mid)update(l,mid,2*node+1,idx,val);
        else update(mid+1,r,2*node+2,idx,val);
        seg[node]=min(seg[2*node+1],seg[2*node+2]);
    }
    int query(int l,int r,int node,int lq,int rq) {
        if (l>rq||r<lq)return inf;
        if (l>=lq&&r<=rq)return seg[node];
        int mid=(l+r)/2;
        return min(query(l,mid,2*node+1,lq,rq),query(mid+1,r,2*node+2,lq,rq));
    }
};
signed main(){
    ios::sync_with_stdio(false);cin.tie(nullptr);
    int n,m;cin>>n>>m;
    vector<ar>v1;segtree s(n);
    f1(m) {
        int u,v,d;cin>>u>>v>>d;
        v1.pb({u,v,d});
        s.update(0,n-2,0,i,d);
    }
    int q;cin>>q;
    while (q--) {
        int t,x,y;cin>>t>>x>>y;--x;
        if (t==1) {
            s.update(0,n-2,0,x,y);
        }
        else {
            int l=0,r=x,ans=x;
            while(l<=r){
                int mid=(l+r)/2;
                if(mid==x||s.query(0,n-2,0,mid,x-1)>=y){
                    ans=mid;
                    r=mid-1;
                }
                else l=mid+1;
            }
            l=x,r=n-1;
            int ans1=x;
            while(l<=r){
                int mid=(l+r)/2;
                if(mid==x||s.query(0,n-2,0,x,mid-1)>=y){
                    ans1=mid;
                    l=mid+1;
                }
                else r=mid-1;
            }
            cout<<ans1-ans+1<<'\n';
        }
    }

}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...