// #pragma GCC optimize("O3,unroll-loops")
//#pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt")
#include<bits/stdc++.h>
#define ll long long
#define int ll
using namespace std;
template<typename... T>
void see(T&... args) { ((cin >> args), ...);}
template<typename... T>
void put(T&&... args) { ((cout << args << " "), ...);}
template<typename... T>
void putl(T&&... args) { ((cout << args << " "), ...); cout<<'\n';}
#define error(args...) { string _s = #args; replace(_s.begin(), _s.end(), ',', ' '); stringstream _ss(_s); istream_iterator<string> _it(_ss); err(_it, args); }
void err(istream_iterator<string> it) {}
template<typename T, typename... Args>
void err(istream_iterator<string> it, T a, Args... args) {cerr << *it << "=" << a << ", "; err(++it, args...);}
#define du long double
#define m_p make_pair
#define pb push_back
#define pii pair<int,int>
#define piii pair<pii,int>
#define vi vector<int>
#define vii vector<pii>
#define viii vector<pair<int,pii> >
#define si set<int>
#define sii multiset<pii>
#define siii set<pair<int,pii> >
#define F first
#define S second
#define pre precision
#define sz size()
#define all(x) x.begin(),x.end()
#ifndef ONLINE_JUDGE
#define OK cout << __LINE__ << "| "<< "---------------------------OK-----------------------" << endl;
#define deb(x) cout << __LINE__ << "| "<< #x << " = " << x << endl;
#else
#define OK
#define deb(x)
#endif
#define int long long
#define cn continue
#define rt return
#define nl cout<<'\n'
#define OPEN freopen ("exam.in","r" , stdin), freopen ("exam.out","w",stdout)
const ll mod=1e9+7;
const ll inf=1e18;
const du PI=3.14;
const int N=1e6;
const int dx[]={-1,0,1,0};
const int dy[]={0,-1,0,1};
ll f[N];
ll phi(ll n){
ll res = n;
for(ll i = 2; i * i <= n; i ++){
if(n % i == 0){
while(n % i == 0)
n /= i;
res -= res / i;
}
}
if(n > 1)
res -= res / n;
return res;
}
ll bp(ll a,ll b){
ll res=1;
while(b){
if(b&1)res=(res%mod)*(a%mod);
res%=mod;
a=a*a%mod;
b/=2ll;
}
return res;
}
ll mult(ll a,ll b){
return (1ll*a*b)%mod;
}
ll di(ll a,ll b){
return mult(a,bp(b,phi(mod)-1));
}
ll add (ll a,ll b){
a+=b;
if(a>=mod)a-=mod;
return a;
}
ll sub(ll a,ll b){
a-=b;
if(a<0)a+=mod;
return a;
}
int n,q,t[N*4],x,y;
void build(int v,int l,int r){
if(l==r){
t[v]=1e9;
rt;
}
int m=(l+r)/2;
build(v*2,l,m);
build(v*2+1,m+1,r);
t[v]=min(t[v*2],t[v*2+1]);
}
void upd(int v,int l,int r,int p,int x){
if(l==r){
t[v]=x;
rt;
}
int m=(l+r)/2;
if(p<=m){
upd(v*2,l,m,p,x);
}
else{
upd(v*2+1,m+1,r,p,x);
}
t[v]=min(t[v*2],t[v*2+1]);
}
int get(int v,int l,int r,int tl,int tr,int x){
if(tl>r or l>tr){
return -1;
}
if(t[v]>x){
return -1;
}
if(tl==tr){
return tl;
}
int m=(tl+tr)/2;
int left=get(v*2,l,r,tl,m,x);
if(left!=-1){
return left;
}
return get(v*2+1,l,r,m+1,tr,x);
}
void Teemka_abi(){
cin>>n>>q;
build(1,1,n);
while(q--){
char s;
cin>>s;
cin>>x>>y;
if(s=='M'){
upd(1,1,n,y,x);
}
else{
cout<<get(1,y,n,1,n,x);
nl;
}
}
}
signed main(){
// OPEN;
int tt=1;
// cin>>tt;
while(tt--){
Teemka_abi();
nl;
}
}
Compilation message (stderr)
deda.cpp:41: warning: "int" redefined
41 | #define int long long
|
deda.cpp:5: note: this is the location of the previous definition
5 | #define int ll
|| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |