WA + MLE 求助 , 悬赏 2 个关注
查看原帖
WA + MLE 求助 , 悬赏 2 个关注
481527
AC_CSP楼主2023/2/26 14:55

qwq

# include <bits/stdc++.h>
using namespace std ;
const int N = 2e5 + 7 ;
struct Node {
	int son[2] , max ;
}t[N << 2] ;
int tot ;
int n , m ;
char opt ;
int lst , x ;
int cnt ;
int L , R , T ;
inline void push_up ( int u ) {
	t[u] . max = max ( t[t[u] . son[0]] . max , t[t[u] . son[1]] . max) ;
}
inline bool inrange ( int l , int r ) {
	return L <= l && r <= R ;
}
inline int query ( int u , int l , int r ) {
	if ( inrange(l,r) ) return t[u] . max ;
	int m = l + r >> 1 ;
	int tmp = 0 ;
	if ( L <= m && t[u] . son[0] ) tmp = max ( tmp , query ( t[u] . son[0] , l , m ) ) ;
	if ( R > m && t[u] . son[1] ) tmp = max ( tmp , query ( t[u] . son[1] , m + 1 , r ) ) ;
	return tmp ;
}
inline void update ( int u , int l , int r ) {
	if ( l == r ) {
		t[u] . max = T ;
		return ;
	}
	int m = l + r >> 1 ;
	int cur = L > m ;
	if ( ! t[u] . son[cur] ) t[u] . son[cur] = ++tot ;
	update ( t[u] . son[cur] , cur ? m + 1 : l , cur ? r : m ) ;
	push_up(u) ;
}
int main () {
	ios :: sync_with_stdio(false) ;
	cin . tie(0) ;
	cout . tie(0) ;
	cin >> n >> m ;
	while ( n-- ) {
		cin >> opt >> x ;
		if ( opt == 'Q' ) L = cnt - x + 1 , R = cnt , lst = query ( 1 , 1 , n ) , cout << lst << "\n" ;
		if ( opt == 'A' ) L = ++cnt , T = ( x + lst ) % m , update( 1 , 1 , n ) ;
	}
	return 0 ;
}
2023/2/26 14:55
加载中...