题目:语文成绩
#include <iostream>
#include <algorithm>
using namespace std;
const int N = 5000010;
int score[N],tr[N];
int n,t;
int lowbit(int x)
{
return x & (-x);
}
void update(int a,int b)
{
for(int i = a;i <= N;i += lowbit(i))
{
tr[i] += b;
}
}
int query()
{
int minn = 1e9;
for(int i = 1;i <= n;i ++)
{
int res = 0;
for(int j = i;j;j -= lowbit(j))
{
res += tr[j];
}
//cout << res << endl;
minn = min(minn,res);
}
return minn;
}
int main()
{
cin >> n >> t;
for(int i = 1;i <= n;i ++)
{
cin >> score[i];
update(i,score[i] - score[i - 1]);
}
// for(int i = 1;i <= n;i ++)
// {
// cout << tr[i] << ' ';
// }
while(t --)
{
int x,y,z;
cin >> x >> y >> z;
update(x,z);
update(y + 1,-z);
}
// for(int i = 1;i <= n;i ++)
// {
// cout << tr[i] << ' ';
// }
cout << query() << endl;
return 0;
}