标签:des style blog http io color ar os for
线段树,前缀和最小
Time Limit: 1000MS | Memory Limit: 65536KB | 64bit IO Format: %I64d & %I64u |
Description
Input
Output
Sample Input
input | output |
---|---|
5 -1000 10.09 21:00 +500 09.09 14:00 +1000 02.09 00:00 -1000 17.09 21:00 +500 18.09 13:00 |
-1000 -500 0 -500 -500 |
Source
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; typedef long long int LL; const int maxn=110000; int n; LL money[maxn]; LL Time[maxn],T[maxn]; LL add[maxn<<2],mx[maxn<<2]; #define lson l,m,rt<<1 #define rson m+1,r,rt<<1|1 void build(int l,int r,int rt) { add[rt]=0,mx[rt]=0; if(l==r) return ; int m=(l+r)/2; build(lson); build(rson); } void upd_add(int rt) { if(add[rt]) { mx[rt<<1]+=add[rt]; mx[rt<<1|1]+=add[rt]; add[rt<<1]+=add[rt]; add[rt<<1|1]+=add[rt]; add[rt]=0; } } void push_down(int rt) { upd_add(rt); } void push_up(int rt) { mx[rt]=min(mx[rt<<1],mx[rt<<1|1]); } void update(int L,int R,int V,int l,int r,int rt) { if(L<=l&&r<=R) { add[rt]+=V; mx[rt]+=V; return ; } push_down(rt); int m=(l+r)/2; if(L<=m) update(L,R,V,lson); if(R>m) update(L,R,V,rson); push_up(rt); } int main() { scanf("%d",&n); getchar(); for(int i=0;i<n;i++) { char op; LL mo; int day,mouth,hh,mm; scanf("%c%I64d %d.%d %d:%d",&op,&mo,&day,&mouth,&hh,&mm); money[i]=mo; if(op=='-') money[i]*=-1; Time[i]=1LL*(mouth*31+day)*24*60+hh*60+mm; T[i]=Time[i]; } sort(T,T+n); int m=unique(T,T+n)-T; build(1,n,1); for(int i=0;i<n;i++) { int id=lower_bound(T,T+m,Time[i])-T+1; update(id,n,money[i],1,n,1); printf("%I64d\n",mx[1]>=0?0:mx[1]); } return 0; }
URAL 2014 Zhenya moves from parents 线段树
标签:des style blog http io color ar os for
原文地址:http://blog.csdn.net/ck_boss/article/details/40711121