比赛 2025.10.18 评测结果 AAAAAAAAAA
题目名称 Willem, Chtholly and Seniorious 最终得分 100
用户昵称 梦那边的美好TE 运行时间 2.629 s
代码语言 C++ 内存使用 8.27 MiB
提交时间 2025-10-18 08:58:20
显示代码纯文本
#include <bits/stdc++.h>
#define int long long 
using namespace std;
const int N=1e5+10;
struct cht{
	mutable int l,r,v;
	bool operator < (const cht &a)const{
		return l<a.l;
	} 
};
struct node{int c,v;}b[N];
bool cmp(node a,node b){return a.v<b.v;}
typedef set<cht>::iterator iter;
set<cht>tr;
iter it,L,R;
int n,m,cnt;
iter split(int p){
	if(p>n)return tr.end();
	it=tr.lower_bound(cht{p,0,0});
	if(it!=tr.end()&&it->l==p)return it;
	it--;int x=it->l,y=it->r,z=it->v;
	tr.erase(it),tr.insert(cht{x,p-1,z});
	return tr.insert(cht{p,y,z}).first;
}
void assign(int l,int r,int c){
	R=split(r+1),L=split(l);
	tr.erase(L,R);tr.insert(cht{l,r,c});
	return;
}
void add(int l,int r,int x){
	R=split(r+1),L=split(l);
	for(it=L;it!=R;it++){
		it->v=(it->v+x);
	}
	return;
}
int kth(int l,int r,int k){
	R=split(r+1),L=split(l);
	cnt=0;
	for(it=L;it!=R;it++)b[++cnt]=node{it->r-it->l+1,it->v};
	sort(b+1,b+1+cnt,cmp);
	for(int i=1;i<=cnt;i++){
		if(k<=b[i].c)return b[i].v;
		else k-=b[i].c;
	}
	return -1;
}
int ksm(int a,int b,int mod){
	int ans=1;a%=mod;
	while(b){
		if(b&1)ans=(ans*a)%mod;
		a=(a*a)%mod;
		b>>=1;
	}
	return ans;
}
int ask(int l,int r,int x,int mod){
	int res=0,tmp;
	R=split(r+1),L=split(l);
	for(it=L;it!=R;it++){
		tmp=ksm(it->v,x,mod);
		res+=(it->r-it->l+1)*tmp%mod;
		res%=mod;
	}
	return res;
}
signed main(){
	freopen("kdl.in","r",stdin);
	freopen("kdl.out","w",stdout); 
	scanf("%lld %lld",&n,&m);
	for(int i=1,v;i<=n;i++){
		scanf("%lld",&v);
		tr.insert(cht{i,i,v});
	}
	int o,l,r,x,y;
	while(m--){
		scanf("%lld %lld %lld %lld",&o,&l,&r,&x);
		if(l>r)swap(l,r);
		if(o==4)scanf("%lld",&y);
		if(o==1)add(l,r,x);
		if(o==2)assign(l,r,x);
		if(o==3)printf("%lld\n",kth(l,r,x));
		if(o==4)printf("%lld\n",ask(l,r,x,y));
	}
	return 0;
}