4449: 【入门】修正成绩(2121)

内存限制:128 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:5 解决:3

题目描述

某校期中考试结束,学校采用一台阅卷机阅卷。老师在检查大家的成绩时,发现阅卷机阅卷有误,因此不得不手动调整大家的成绩。

现已知有 lns="http://www.w3.org/1998/Math/MathML"> 个同学成绩,需要做 lns="http://www.w3.org/1998/Math/MathML"> 次调整,每次调整操作都是将第 lns="http://www.w3.org/1998/Math/MathML"> 个同学到第 lns="http://www.w3.org/1998/Math/MathML"> 个同学每位同学成绩都加上 lns="http://www.w3.org/1998/Math/MathML"> 分。

请问:经过调整后,全班同学成绩的最低分是多少分?

输入

第一行有两个整数 lns="http://www.w3.org/1998/Math/MathML">,,代表学生数与增加分数的次数。

第二行有 lns="http://www.w3.org/1998/Math/MathML"> 个数,lns="http://www.w3.org/1998/Math/MathML">1,代表各个学生的初始成绩。

接下来 lns="http://www.w3.org/1998/Math/MathML"> 行,每行有三个数,lns="http://www.w3.org/1998/Math/MathML">,,,代表给第 lns="http://www.w3.org/1998/Math/MathML"> 个到第 lns="http://www.w3.org/1998/Math/MathML"> 个学生每人增加 lns="http://www.w3.org/1998/Math/MathML"> 分。

数据范围

lns="http://www.w3.org/1998/Math/MathML">100000lns="http://www.w3.org/1998/Math/MathML">lns="http://www.w3.org/1998/Math/MathML">1,,学生初始成绩lns="http://www.w3.org/1998/Math/MathML">100lns="http://www.w3.org/1998/Math/MathML">100

输出

输出仅一行,代表更改分数后,全班的最低分。

样例输入 复制

3 2
1 1 1
1 2 1
2 3 1

样例输出 复制

2

提示

#include<bits/stdc++.h>
using namespace std;
const int N=5000010;
int b[N],n,p,x,y,z,t,ans=0x3f3f3f3f;
int main(){
    scanf("%d%d",&n,&p);
    for(int i=1;i<=n;i++) {
    	scanf("%d",&t);
    	b[i]+=t;
    	b[i+1]-=t;
	}
	for(int i=1;i<=p;i++) {
		scanf("%d%d%d",&x,&y,&z);
		b[x]+=z;
		b[y+1]-=z;
	}
	for(int i=1;i<=n;i++) {
		b[i]=b[i]+b[i-1];
		ans=min(ans,b[i]);
	}
	printf("%d",ans);
	return 0;
}