求帮助
  • 板块P2357 守墓人
  • 楼主Yhlo_Yzj
  • 当前回复0
  • 已保存回复0
  • 发布时间2022/3/26 22:18
  • 上次更新2023/10/28 05:28:00
查看原帖
求帮助
246822
Yhlo_Yzj楼主2022/3/26 22:18
#include <bits/stdc++.h>
using namespace std;
int n , m , a[2000005] , diff[2000005] , sum[2000005]; 
int main () {
	cin >> n >> m;
	for(int i = 1;i <= n;i ++){
		cin >> a[i];
		diff[i] = a[i] - a[i - 1];
	} 
	for(int i = 1;i <= m;i ++){
		int l;
		cin >> l;
		if(l == 1){
			int lt , rt , num;
			cin >> lt >> rt >> num;
			diff[lt] += num;
			diff[rt + 1] -= num;
		}else if(l == 2){
			int num;
			cin >> num;
			diff[1] += num;
			diff[2] -= num;
			cout << 1 << endl;
		}else if(l == 3){
			int num;
			cin >> num;
			diff[1] -= num;
			diff[2] += num;
		}else if(l == 4){
			int ans = 0;
			for(int i = 1;i <= n;i ++){
				sum[i] = sum[i - 1] + diff[i];
				ans += sum[i];
			}
			cout << ans << "\n";
			memset(sum , 0 , sizeof(sum));
		}else{
			cout << diff[1] << endl;
		}
	}
	return 0;
}

2022/3/26 22:18
加载中...