比赛 |
欢乐五一练练练 |
评测结果 |
AAAAAAAAAAAAAAAAAAAA |
题目名称 |
借教室 |
最终得分 |
100 |
用户昵称 |
Hyoi_0Koto |
运行时间 |
1.405 s |
代码语言 |
C++ |
内存使用 |
22.96 MiB |
提交时间 |
2017-04-28 13:33:16 |
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cctype>
#include<cstring>
#define ll long long
#define gys mylove
using namespace std;
const int maxn=1000000+10;
int d,s,t;
int n,m,pos;
ll a[maxn],b[maxn],sum;
int rd[maxn],rs[maxn],rt[maxn];
inline void in(int &x)
{
x=0;int f=1;char t=getchar();
while(!isdigit(t)){if(t=='-')f=-1;t=getchar();}
while(isdigit(t)){x=x*10+t-48;t=getchar();}
x*=f;
}
inline void lin(ll &x)
{
x=0;int f=1;char t=getchar();
while(!isdigit(t)){if(t=='-')f=-1;t=getchar();}
while(isdigit(t)){x=x*10+t-48;t=getchar();}
x*=f;
}
inline int div(int l,int r){
int mid;
while(l<=r){
mid=(l+r)>>1;
for(int i=1;i<=mid;i++){
b[rs[i]]+=rd[i];
b[rt[i]+1]-=rd[i];
}
for(int i=1;i<=n;i++){
sum+=b[i];
if(sum>a[i]){
r=mid-1;break;
}
else pos++;
}
if(pos==n) l=mid+1;
sum=0;pos=0;
memset(b,0,sizeof(b));
}
if(l==m+1) printf("0");
else printf("-1\n%d",l);
}
inline void work(){
in(n);in(m);
for(int i=1;i<=n;i++) lin(a[i]);
for(int i=1;i<=m;i++){
in(rd[i]);in(rs[i]);in(rt[i]);
}
div(0,m);
}
inline int Main(){
freopen("classrooms.in","r",stdin);
freopen("classrooms.out","w",stdout);
work();
return 0;
}
int main(){;}
int gys=Main();