RT
写了一个差分+前缀和 但是在判断到底是哪个订单寄了的时候直接输出的第一个寄的订单
显然这是锅的 样例输出-1和3 但是切了
(??
#include<iostream>
#include<cstdio>
#define int long long
using namespace std;
//ifstream cin(".in");
//ofstream cout(".out");
inline int read()
{
int x=0,f=1;char ch=getchar();
while(ch<'0'||ch>'9')
{
if(ch=='-') f=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9')
{
x=x*10+ch-'0';
ch=getchar();
}
return x*f;
}
int n,m;
int a[1000005],s[1000006];
int st[1000005],ed[1000005],num[1000005];
signed main()
{
int i,j=0,x;
n=read();m=read();
for(i=1;i<=n;i++)
{
a[i]=read();
s[i]=a[i]-a[i-1];
}
for(i=1;i<=m;i++)
{
num[i]=read();st[i]=read();ed[i]=read();
s[st[i]]-=num[i];s[ed[i]+1]+=num[i];
}
for(i=1;i<=n;i++) s[i]+=s[i-1];
for(i=1;i<=n;i++)
if(s[i]<0)
{
j=i;
break;
}
if(j==0)
{
cout<<j<<endl;
return 0;
}
cout<<-1<<endl;
for(i=1;i<=m;i++)
if(st[i]<=j&&ed[i]>=j)
{
a[j]-=num[i];
if(a[j]<0)
{
cout<<i<<endl;
return 0;
}
}
return 0;
}