标签:
P2075 [NOIP2012T5]借教室
4 3
2 5 4 3
2 1 3
3 2 4
4 2 4
-1
2
1 #include<bits/stdc++.h> 2 using namespace std; 3 int n,m; 4 struct node 5 { 6 int d,s,e; 7 }N[1000005]; 8 int gg[1000005]; 9 int b[1000005],a[1000005]; 10 int flag=1; 11 int fun(int which) 12 { 13 memset(gg,0,sizeof(gg)); 14 for(int i=1;i<=which;i++) 15 { 16 gg[N[i].s]-=N[i].d; 17 gg[N[i].e+1]+=N[i].d; 18 } 19 int t=0; 20 for(int i=1;i<=n;i++) 21 { 22 t+=gg[i]; 23 b[i]=t; 24 if(b[i]+a[i]<0) 25 return 0; 26 } 27 return 1; 28 } 29 int main() 30 { 31 scanf("%d %d",&n,&m); 32 for(int i=1;i<=n;i++) 33 scanf("%d",&a[i]); 34 for(int i=1;i<=m;i++) 35 scanf("%d %d %d",&N[i].d,&N[i].s,&N[i].e); 36 int l=1,r=m,mid=0; 37 while(r-l>0) 38 { 39 mid=(l+r)/2; 40 if(fun(mid)) 41 l=mid+1; 42 else 43 { 44 r=mid; 45 flag=0; 46 } 47 } 48 if(flag) 49 printf("0\n"); 50 else 51 { 52 printf("-1\n"); 53 cout<<l<<endl; 54 } 55 return 0; 56 }
P2075 [NOIP2012T5]借教室 区间更新+二分查找
标签:
原文地址:http://www.cnblogs.com/hsd-/p/5285701.html