BoxerTC

Untitled

Jun 23rd, 2015
353
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.24 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. #define sc( x ) scanf( "%d" , &x )
  5. #define REP( i , n ) for( int i = 0 ; i < n ; i++ )
  6. #define clr( t , val ) memset( t , val , sizeof(t) )
  7.  
  8. #define all(v)  v.begin() , v.end()
  9. #define pb push_back
  10. #define SZ( v ) ((int)(v).size())
  11.  
  12. #define mp make_pair
  13. #define fi first
  14. #define se second
  15.  
  16. #define test() puts("************test************");
  17. #define DEBUG( x ) cout <<  #x << "=" << x << endl;
  18. #define DEBUG2( x , y ) cout << #x << "=" << x << " " << #y << "=" << y << endl;
  19.  
  20. #define N 400
  21. #define INF 1000000000
  22.  
  23. typedef long long ll;
  24. typedef pair< int , int > pii;
  25. typedef vector< int > vi;
  26. typedef vector< vi > vvi;
  27.  
  28. bool used[ N + 5 ][ N + 5 ];
  29. int memo[ N + 5 ][ N + 5 ];
  30. int A[ 2 ][ N + 5 ];
  31. int n;
  32. int dp( int pos , int cur ){
  33.     if( pos == n ) return cur == 0 ? 0 : INF;
  34.     if( used[ pos ][ cur ] ) return memo[ pos ][ cur ];
  35.     used[ pos ][ cur ] = 1;
  36.     int &dev = memo[ pos ][ cur ] = dp( pos + 1 , cur );
  37.     REP( k , 2 )
  38.         if( cur ) dev = min( dev , A[ k ][ pos ] + dp( pos + 1 , cur - 1 ) );
  39.     return dev;
  40. }
  41.  
  42.  
  43. int main(){
  44.     int m;
  45.     while( sc( m ) == 1 ){
  46.         sc( n );
  47.         REP( k , 2 ) REP( i , n ) sc( A[ k ][ i ] );
  48.         clr( used , 0 );
  49.         printf( "%d\n" , dp( 0 , m ) );
  50.     }
  51. }
Advertisement
Add Comment
Please, Sign In to add comment