求助(差分)
查看原帖
求助(差分)
357753
bbeisting楼主2021/11/18 19:59
#include<bits/stdc++.h>
using namespace std;
const int M=5000005;
int n,m,ans=105,a[M],d[M];
int main(){
    cin>>n>>m;
    for(int i=1;i<=n;i++){
    	cin>>a[i];
    	d[i]=a[i]-a[i-1];
    }
    for(int i=1;i<=m;i++){
    	int j,x,y;
    	cin>>j>>x>>y;
    	if(j==1){
    		int k;
    		cin>>k;
    		d[x]+=k;d[y+1]-=k;
    	}
    	else{
			ans=0;
    		for(int i=1;i<=y;i++){
	    		a[i]=d[i]+a[i-1];
				if(i>=x) ans+=a[i];
			}
			cout<<ans<<endl;
    	}
    }
    return 0;
}

70分,还能优化吗?

2021/11/18 19:59
加载中...