Submission #1303516

#TimeUsernameProblemLanguageResultExecution timeMemory
1303516yus1f_mDeda (COCI17_deda)C++20
140 / 140
563 ms7652 KiB
#pragma GCC optimize("O3")
#include <bits/stdc++.h>
#define ll long long
#define str string
#define pb push_back
#define pf push_front
#define in insert
#define all(v) v.begin(),v.end()
#define fastIO ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
const int sz=1000000,INF=1000000000;
using namespace std;
vector<ll>mins;
ll getMin(ll left,ll right,ll index,ll Left,ll Right)
{
    if(left>Right || right<Left)
    {
        return INF;
    }
    if(left>=Left && right<=Right)
    {
        return mins[index];
    }
    else
    {
        ll middle=(left+right)/2;
        return min(getMin(left,middle,2*index,Left,Right),getMin(middle+1,right,2*index+1,Left,Right));
    }
}
void update(ll left,ll right,ll index,ll Index,ll Num)
{
    if(Index>=left && Index<=right)
    {
        if(left==right)
        {
            mins[index]=Num;
        }
        else
        {
            ll middle=(left+right)/2;
            if(Index<=middle)
            {
                update(left,middle,2*index,Index,Num);
            }
            else
            {
                update(middle+1,right,2*index+1,Index,Num);
            }
            mins[index]=min(mins[2*index],mins[2*index+1]);
        }
    }
}
void solve()
{
    ll n,m,num1,num2,left,right,middle,ans;
    char c;
    cin>>n>>m;
    mins.resize(4*n+1),fill(all(mins),INF);
    for(int i=0;i<m;i++)
    {
        cin>>c>>num1>>num2;
        if(c=='D')
        {
            left=num2,right=n,ans=-1;
            while(left<=right)
            {
                middle=(left+right)/2;
                if(getMin(1,n,1,num2,middle)>num1)
                {
                    left=middle+1;
                }
                else
                {
                    right=middle-1,ans=middle;
                }
            }
            cout<<ans<<"\n";
        }
        else
        {
            update(1,n,1,num2,num1);
        }
    }
}
int main()
{
    fastIO;
    ll t=1;
    //cin>>t;
    while(t--)
    {
        solve();
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...