#include <bits/stdc++.h>
using namespace std;
struct ab{
int bg,en,num;//开始坐标,结束坐标,建议中树的数量
}a[114514];
bool cmp(ab x,ab y){
return x.en<y.en;//贪心:结束坐标最靠前
}
int main()
{
int n,h,x[114514]/*街道*/,s=0,s2=0,s3=0,ans=0/*答案*/;
cin>>n;
cin>>h;
for(int i=0;i<h;i++){
cin>>a[i].bg>>a[i].en>>a[i].num;
}
sort(a,a+h,cmp);
for(int i=0;i<h;i++){
s=0;//建议区间内初始树的数量
s3=0;//a[i].en-s3表植树的坐标(从后往前植树)
for(int j=a[i].bg;j<=a[i].en;j++){//判断建议区间内是否有树
if(x[j]==1) s++;
}
s2=s;//建议区间内树的数量
if(s2!=a[i].num){//如果建议区间内的树没有达到要求
while(s2<a[i].num){//植树知道满足要求
x[a[i].en-s3]=1;//植树
s2++;//建议区间内树的数量+1
s3++;//坐标往前推一个
ans++;
}
}
else continue;//无用哈
}
cout<<ans;
return 0;
}
36分 记录详情