求助本题时间起飞
查看原帖
求助本题时间起飞
394167
Cure_Wing楼主2023/1/31 15:37
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<vector>
#define int long long
using std::cin;using std::cout;
constexpr int N=1000006,mod=317847191;
int n,m,x[N],mul=1,ans[N],minn,maxn;
char c[N];
std::vector<int>a;
inline int qpow(int a,int b,int mod,int t=1){for(;b;b>>=1,a=a*a%mod)if(b&1)t=t*a%mod;return t;}
signed main(){
//	freopen(".in","r",stdin);
//	freopen(".out","w",stdout);
	std::ios::sync_with_stdio(false);
	cin.tie(nullptr);cout.tie(nullptr);
	cin>>n>>m;
	for(int i=1;i<=n;++i) cin>>x[0],a.push_back(x[0]);
	std::sort(a.begin(),a.end());
	for(int i=1;i<=m;++i){
		cin>>c[i];
		if(c[i]=='D'){
			cin>>x[i];
			a.erase(std::lower_bound(a.begin(),a.end(),x[i]));
		}
	}
	for(auto i:a) mul=mul*i%mod;
	minn=*a.begin();maxn=*(--a.end());
	for(int i=m;i>=1;--i){
		if(c[i]=='D'){
			mul=mul*x[i]%mod;
			minn=std::min(x[i],minn);
			maxn=std::max(x[i],maxn);
		}else if(c[i]=='B'){
			ans[i]=maxn;
		}else if(c[i]=='S'){
			ans[i]=minn;
		}else if(c[i]=='M'){
			ans[i]=qpow(maxn,minn,mod);
		}else if(c[i]=='T'){
			ans[i]=mul;
		}else{
			ans[i]=11451411919810;
		}
	}
	for(int i=1;i<=m;++i)
		if(c[i]!='D')
			cout<<ans[i]<<'\n';
	return 0;
}
2023/1/31 15:37
加载中...