Submission #1297549

#TimeUsernameProblemLanguageResultExecution timeMemory
1297549ibroooshDeda (COCI17_deda)C++20
140 / 140
272 ms5632 KiB
// #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 timeMemoryGrader output
Fetching results...