数据太水
查看原帖
数据太水
93851
小罐猹楼主2022/3/22 14:58

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;
}


2022/3/22 14:58
加载中...