Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
37918 | baka24 | 【BJ】T3 | C++ | 运行超时 | 20 | 1000 MS | 1032 KB | 1019 | 2025-06-02 13:58:13 |
#include<bits/stdc++.h> using namespace std; #define int long long int read(){int x=0,f=1;char c=getchar();while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}while(c>='0'&&c<='9')x=x*10+c-'0',c=getchar();return x*f;} const int MAXN=200010,N=30,inf=1e18,Mod=1e9+7; void add(int &x,int y){x+=y;if(x>=Mod)x-=Mod;if(x<0)x+=Mod;} void Min(int &x,int y){x=min(x,y);} int n,k,q,a[MAXN]; int sol(int x){ int l=x,r=x,mx=a[x],res=0; while(l>1||r<n){ if(a[l-1]<=mx)l--,res++; else if(a[r+1]<=mx)r++,res++; else res+=k,mx=min(a[l-1],a[r+1]); } return res; } void slv(){ n=read(),k=read(); for(int i=1;i<=n;i++)a[i]=read(); a[0]=a[n+1]=inf; q=read(); while(q--){ int x=read(),l=read(),r=read(); swap(a[x],a[x+1]); int ans=0; for(int i=l;i<=r;i++)ans+=sol(i); printf("%lld\n",ans); } } signed main(){ // freopen("summer.in","r",stdin);freopen("summer.out","w",stdout); slv(); return 0; }