Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- #define sc( x ) scanf( "%d" , &x )
- #define REP( i , n ) for( int i = 0 ; i < n ; ++i )
- #define clr( t , val ) memset( t , val , sizeof( t ) )
- #define pb push_back
- #define all( v ) v.begin() , v.end()
- #define SZ( v ) ((int)(v).size())
- #define mp make_pair
- #define fi first
- #define se second
- #define N 100000
- typedef pair< int , int > pii;
- typedef vector< pii > vpii;
- typedef vector< int > vi;
- typedef long long ll;
- struct Node{
- int val ;
- ll prior;
- Node(){}
- Node( int val , ll prior ) : val( val ) , prior( prior ) {}
- };
- bool operator < ( const Node &p , const Node &q ){
- return p.prior < q.prior;
- }
- #define v1 ((node<<1)+1)
- #define v2 (v1+1)
- #define med ((a+b)>>1)
- #define LEFT v1 , a , med
- #define RIGHT v2 , med + 1 , b
- ll pref[ 4 * N + 5 ] , sum[ 4 * N + 5 ];
- void update( int node , int a , int b , int pos , int val ){
- if( pos > b || a > pos ) return;
- if( a == b ){
- pref[ node ] = val ;
- sum[ node ] = val;
- return;
- }
- update( LEFT , pos , val );
- update( RIGHT , pos , val );
- sum[ node ] = sum[ v1 ] + sum[ v2 ];
- pref[ node ] = min( pref[ v1 ] , sum[ v1 ] + pref[ v2 ] );
- }
- int n;
- int main(){
- ios_base :: sync_with_stdio( 0 );
- int val;
- string date , hour;
- while( cin >> n ){
- vector< Node > V;
- REP( i , n ){
- cin >> val >> date >> hour;
- //string prior = date.substr( 3 , 2 ) + date.substr( 0 , 2 ) + hour;
- //dd.MM hh:mm
- int hh = (hour[ 0 ] - '0')*10 + (hour[ 1 ] - '0');
- int mm = (hour[ 3 ] - '0')*10 + (hour[ 4 ] - '0');
- int dd = (date[ 0 ] - '0')*10 + (date[ 1 ] - '0');
- int MM = (date[ 3 ] - '0')*10 + (date[ 4 ] - '0');
- ll prior = (ll) mm + (ll)hh * 100LL + (ll)dd * 10000LL + (ll)MM * 1000000LL;
- //cout << prior << endl;
- V.pb( Node( val , prior ) );
- }
- vector< Node > A = V;
- sort( all( V ) );
- //clr( pref , 0 ) , clr( sum , 0 );
- REP( i , n ){
- int pos = lower_bound( all( V ) , A[ i ] ) - V.begin();
- int val = A[ i ].val;
- update( 0 , 0 , n - 1 , pos , val );
- cout << min( 0LL , pref[ 0 ] ) << '\n';
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement