想只使用一个数组进行处理,但最终只能得到90,无法通过最后一组第一个测试点,求指正
代码如下:
#include<bits/stdc++.h>
using namespace std;
const int N=1e6+5;
long long diff[N],total[N];
int main()
{
int n,m;cin>>n>>m;
for(int i=1;i<=m;i++)
{
long long l,r,op;cin>>l>>r>>op;
switch(op)
{
case 1:
diff[l]+=1;
diff[r+1]-=1;
break;
case 2:
diff[l]+=N;
diff[r+1]-=N;
break;
case 3:
diff[l]-=1e13;
diff[r+1]+=1e13;
break;
}
}
int cous=0;
for(int i=1;i<=n;i++)
{
total[i]=total[i-1]+diff[i];
if(total[i]>N && total[i]%N!=0) cous++;
}
cout<<cous<<endl;
return 0;
}