91pts求助,有开long long但还是wa
查看原帖
91pts求助,有开long long但还是wa
826079
Autumn_Rain楼主2024/3/16 11:56
#include<iostream>
#include<algorithm>
using namespace std;
#define long long int
const int N=1e6+10;
struct node{
    int tag,tag2;
}tree[4*N];
int n,m,x,y,k,d,op,a[N];
void update(int u,int L,int R,int l,int r,int t1,int t2){
    if(l<=L&&r>=R){
		tree[u].tag+=t1;
		tree[u].tag2+=t2;
		return;
	}
    int mid=(L+R)/2;
    if(l<=mid)update(u*2,L,mid,l,r,t1,t2);
    if(r>=mid+1)update(u*2+1,mid+1,R,l,r,t1,t2);
}
int query(int u,int l,int r,int p,int t1,int t2){
    if(l==r)return t1+tree[u].tag+l*(t2+tree[u].tag2);
    if(p<=(l+r)/2)return query(u*2,l,(l+r)/2,p,t1+tree[u].tag,t2+tree[u].tag2);
    else return query(u*2+1,(l+r)/2+1,r,p,t1+tree[u].tag,t2+tree[u].tag2);
}
signed main(){
    cin>>n>>m;
    for(int i=1;i<=n;i++){
    	cin>>a[i];
	}
    while(m--){
        cin>>op;
        if(op==1){
            cin>>x>>y>>k>>d;
            update(1,1,n,x,y,k-d*x,d);
        }
        else{
            cin>>x;
            cout<<query(1,1,n,x,0,0)+a[x]<<endl;
        }
    }
    return 0;
}
2024/3/16 11:56
加载中...