Posts

Showing posts from November, 2020

AOI

Image
  # include < bits/stdc++.h > # define M 100 using namespace std ; int n , k = 1 , C [ M + 5 ] ; struct T { int cidx , sidx , v ; } A [ M + 5 ] ; pair < int , int > ans [ 5 ] ; bool sf ( T a , T b ) { return a . v > b . v ; } void input ( ) { cin > > n ; for ( int i = 1 ; i < = n ; i + + ) { cin > > A [ i ] . cidx > > A [ i ] . sidx > > A [ i ] . v ; } sort ( A + 1 , A + n + 1 , sf ) ; } int main ( ) { cin . tie ( 0 ) ; ios :: sync_with_stdio ( false ) ; //freopen("in.txt","r",stdin); input ( ) ; /*for(int i=1;i<=n;i++){         cout<<A[i].cidx<<" "<<A[i].sidx<<" "<<A[i].v<<endl;     }*/ for ( int i = 1 ; i < = n ; i + + ) { if ( C [ A [ i ] . cidx ] < 2 ) { ans [ k + + ] = { A [ i ] . cidx , A [ i ] . sidx } ; ...

Food Chain

Image
  # include < bits/stdc++.h > # define M 500000 using namespace std ; int n ; int lvl , sz , from_idx , ans ; int trace [ M + 5 ] , path [ M + 5 ] ; struct T { int idx , l , r , v ; } A [ M + 5 ] ; vector < pair < int , int > > tree ; bool sf1 ( T a , T b ) { if ( a . r = = b . r ) { if ( a . l = = b . l ) return a . idx < b . idx ; return a . l > b . l ; } return a . r < b . r ; } bool sf2 ( T a , T b ) { if ( a . l = = b . l ) { if ( a . r = = b . r ) return a . idx < b . idx ; return a . r > b . r ; } return a . l < b . l ; } void input ( ) { cin > > n ; for ( int i = 1 ; i < = n ; i + + ) { cin > > A [ i ] . idx > > A [ i ] . l > > A [ i ] . r ; } sort ( A + 1 , A + n + 1 , sf1 ) ; A [ 1 ] . v = 1 ; for ( int i = 1 ; i < n ; i + + ) { /*if(A[i].v==A[i+1...

Spinning Table

Image
# include < bits/stdc++.h > # define N 300000 using namespace std ; int n ; int pi [ 3 ] ; int cn [ 3 ] [ 100 + 5 ] ; int dp [ 100 + 5 ] [ 100 + 5 ] [ 100 + 5 ] [ 3 ] ; int res ; void input ( ) { //freopen("in.txt","r",stdin); cin > > n ; for ( int i = 0 ; i < 3 ; i + + ) { cin > > pi [ i ] ; for ( int j = 1 ; j < = pi [ i ] ; j + + ) { cin > > cn [ i ] [ j ] ; cn [ i ] [ j ] - - ; } cn [ 1 ] [ 0 ] = n / 3 ; cn [ 2 ] [ 0 ] = 2 * ( n / 3 ) ; } memset ( dp , - 1 , sizeof dp ) ; } int rev ( int a , int b ) { int diff = abs ( a - b ) ; diff % = n ; return min ( diff , n - diff ) ; } int pro ( int i , int j , int k , int idx ) { //cout<<i<<" "<<j<<" "<<k<<" "<<idx<<endl; int & ans = dp [ i ] [ j ] [ k ]...

Race

Image
  # include < bits/stdc++.h > # define N 500000 using namespace std ; int n ; int sz ; int ans [ 4 * N + 5 ] ; struct _tuple { int org ; int v ; int idx ; } ; _tuple A [ N + 5 ] ; vector < int > tree ; bool sf ( _tuple a , _tuple b ) { return a . org > b . org ; } bool sff ( _tuple a , _tuple b ) { return a . idx < b . idx ; } void input ( ) { //freopen("in.txt","r",stdin); cin > > n ; for ( int i = 1 ; i < = n ; i + + ) { cin > > A [ i ] . org ; A [ i ] . idx = i ; } sort ( A + 1 , A + n + 1 , sf ) ; A [ 1 ] . v = 1 ; for ( int i = 1 ; i < n ; i + + ) { A [ i + 1 ] . v = A [ i ] . v + 1 ; } sort ( A + 1 , A + n + 1 , sff ) ; } int s_t ( int l , int r ) { int ll = 0 , rr = 0 ; while ( l < = r ) { if ( l % 2 = = 1 ) { ll + = tree [ l ] ; if ( l...

Budget

Image
  # include < bits/stdc++.h > # define N 10000 using namespace std ; int n ; long long V [ N + 5 ] ; long long _max ; long long sum ; long long ans ; void input ( ) { //freopen("in.txt","r",stdin); cin > > n ; for ( int i = 0 ; i < n ; i + + ) { cin > > V [ i ] ; } cin > > _max ; } int main ( ) { input ( ) ; sort ( V , V + n ) ; ans = _max / n ; for ( int i = 0 ; i < n ; i + + ) { if ( sum + V [ i ] * ( n - i ) > _max ) { ans = ( _max - sum ) / ( n - i ) ; break ; } else { sum + = V [ i ] ; ans = max ( ans , V [ i ] ) ; } } cout < < ans < < endl ; return 0 ; }

Princess Rescue

Image
  # include < bits/stdc++.h > # define M 500 using namespace std ; int n ; int ans ; int dp [ M + 5 ] [ M + 5 ] ; int dis [ M + 5 ] , st [ M + 5 ] , ck [ M + 5 ] ; int a [ M + 5 ] [ M + 5 ] ; void pro ( ) { dp [ 0 ] [ 0 ] = 1 ; for ( int k = 1 ; k < n ; k + + ) { for ( int i = 0 ; i < k ; i + + ) { for ( int j = 0 ; j < k ; j + + ) { if ( i = = j & & i ! = 0 ) { continue ; } if ( dp [ i ] [ j ] = = 0 ) { continue ; } if ( a [ i ] [ k ] ) { dp [ k ] [ j ] + = dp [ i ] [ j ] ; dp [ k ] [ j ] % = 1000 ; } if ( a [ k ] [ j ] ) { dp [ i ] [ k ] + = dp [ i ] [ j ] ; dp [ i ] [ k ] % = 1000 ; } } } } /*for(int i=0;i<n;i+...

Parenthesis Value

Image
# include < bits/stdc++.h > using namespace std ; string input ; stack < char > s ; int main ( ) { ios_base :: sync_with_stdio ( 0 ) ; cin . tie ( 0 ) ; cin > > input ; long long result = 0 ; int temp = 1 ; bool impossible = false ; for ( int i = 0 ; i < input . size ( ) ; i + + ) { if ( input [ i ] = = '(' ) { temp * = 2 ; s . push ( '(' ) ; } else if ( input [ i ] = = '[' ) { temp * = 3 ; s . push ( '[' ) ; } else if ( input [ i ] = = ')' & & ( s . empty ( ) | | s . top ( ) ! = '(' ) ) { impossible = true ; ...