记录详情

Wrong Answer


  
# 状态 耗时 内存占用
#1 Wrong Answer 1ms 212.0 KiB
#2 Wrong Answer 1ms 228.0 KiB
#3 Wrong Answer 1ms 224.0 KiB
#4 Wrong Answer 1ms 228.0 KiB
#5 Wrong Answer 1ms 224.0 KiB
#6 Wrong Answer 1ms 228.0 KiB
#7 Wrong Answer 1ms 224.0 KiB
#8 Wrong Answer 1ms 228.0 KiB
#9 Wrong Answer 1ms 224.0 KiB
#10 Wrong Answer 2ms 228.0 KiB
#11 Wrong Answer 1ms 224.0 KiB
#12 Wrong Answer 1ms 228.0 KiB
#13 Wrong Answer 1ms 224.0 KiB
#14 Wrong Answer 1ms 228.0 KiB
#15 Wrong Answer 1ms 224.0 KiB
#16 Wrong Answer 1ms 228.0 KiB
#17 Wrong Answer 1ms 224.0 KiB
#18 Wrong Answer 1ms 228.0 KiB
#19 Wrong Answer 1ms 224.0 KiB
#20 Wrong Answer 1ms 228.0 KiB

代码

#include<bits/stdc++.h>
using namespace std;
int n,m;
inline int read(){
	int x=0,f=1;char c=getchar();
	while(c<'0') f^=(c=='-'),c=getchar();
	while(c>'/') x=(x<<3)+(x<<1)+(c^'0'),c=getchar();
	return f?x:-x;
}
struct node{
	int l,r,tag,mn;
}stt[4000010];
int a[1000010];
inline void add(int k,int l,int r){
	stt[k].l=l;stt[k].r=r;
	if(l==r){
		stt[k].mn=a[l];
		return ;
	}
	int mid=(l+r)>>1;
    add(k<<1,l,mid);
    add(k<<1|1,mid+1,r);
    stt[k].mn=min(stt[k<<1].mn,stt[k<<1|1].mn);
}
inline void pushdown(int k){
	if(stt[k].tag){
		stt[k<<1].mn=stt[k<<1].mn+stt[k<<1].tag;
		stt[k<<1|1].mn=stt[k<<1|1].mn+stt[k<<1|1].tag;
		stt[k<<1].tag=stt[k].tag;
		stt[k<<1|1].tag=stt[k].tag;
		stt[k].tag=0;
		stt[k].mn=min(stt[k<<1].mn,stt[k<<1|1].mn);
	}
}
inline void mod(int k,int l,int r,int x){
	if(stt[k].l>=l&&stt[k].r<=r){
	  stt[k].tag=-x;
	  stt[k].mn-=x;	
	  return ;
	}
	pushdown(k);
	int mid=(stt[k].l+stt[k].r)>>1;
	if(l<=mid)mod(k<<1,l,r,x);
	if(r>mid)mod(k<<1|1,l,r,x);
	stt[k].mn=min(stt[k<<1].mn,stt[k<<1|1].mn);
}
/*inline int query(int k,int l,int r){
	if(stt[k].l>=l&&stt[k].r<=r){
	  return stt[k].mn;//+stt[k].tag;
	}
	pushdown(k);
	int mid=(stt[k].l+stt[k].r)>>1,ans=0;
	if(mid>=r)return query(k<<1,l,r);
	else if(mid<=l)return query(k<<1|1,l,r);
	else {
	  ans+=query(k<<1,l,r);	
	  ans+=query(k<<1|1,l,r);	
	}
	return ans;
}*/
int main(){
	n=read();
	m=read();
	for(int i=1;i<=n;i++){
		a[i]=read(); 
	}
	add(1,1,n);
	for(int i=1;i<=m;i++){
	 int d=read(),s=read(),t=read();
	 mod(1,s,t,d);
	 int q=stt[1].mn;//query(1,s,t);
	 //printf("%d\n",q);
	 if(q<0){
	   puts("-1");
	   printf("%d\n",i);
	   return 0;	
	 }	
	}
	puts("0");
    return 0;
}

信息

递交者
类型
递交
题目
P1037 观光公交
比赛
随机真题赛第一轮(xhy&lfy讲题)
题目数据
下载
语言
C++
递交时间
2019-11-11 14:28:59
评测时间
2019-11-11 14:28:59
评测机
分数
0
总耗时
30ms
峰值内存
228.0 KiB