tcbpg

Happy Birthday UVa 12002

Mar 12th, 2012
165
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.05 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdio>
  3. #include <algorithm>
  4. #include <cstring>
  5.  
  6. using namespace std;
  7. #define forn(i,n) for(int i=0;i<(int)(n);i++)
  8. #define forsn(i,s,n) for(int i=(int)(s);i<(int)(n);i++)
  9.  
  10. //dp[i][j] cantidad de platos que puedo agarrar con i el plato de la base y j el plato del tope.
  11. int n,dp[512][512], dish[512];
  12.  
  13. int main(){
  14.         #ifdef JUAMPI
  15.             freopen("12002.in","r",stdin);
  16.         #endif
  17.            
  18.         for(scanf("%d",&n);n != 0; scanf("%d",&n)){
  19.             dish[0] = 100000; dish[1] = 0;
  20.             forsn(i,2,n+2) scanf("%d",&dish[i]);
  21.        
  22.             memset(dp,0,sizeof(dp));
  23.             forsn(i,2,n+2) dp[i][i] = 1;
  24.             forsn(i,2,n+2){
  25.                 forn(j,i){
  26.                     forn(k,i){
  27.                         if(dish[j] < dish[k]) continue;
  28.            
  29.                         if(dish[i] >= dish[j] && dp[i][k] < dp[j][k]+1){
  30.                             dp[i][k] = dp[j][k]+1;
  31.                         }
  32.                         if(dish[i] <= dish[k] && dp[j][i] < dp[j][k]+1){
  33.                             dp[j][i] = dp[j][k]+1;
  34.                         }
  35.                     }
  36.                 }
  37.             }
  38.            
  39.             int res = 0;
  40.             forn(i,n+2)
  41.             forn(j,n+2)
  42.                 if(res < dp[i][j]) res = dp[i][j];
  43.            
  44.             printf("%d\n",res);
  45.         }
  46.        
  47.         return 0;
  48. }
Advertisement
Add Comment
Please, Sign In to add comment