Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstdio>
- #include <algorithm>
- #include <cstring>
- using namespace std;
- #define forn(i,n) for(int i=0;i<(int)(n);i++)
- #define forsn(i,s,n) for(int i=(int)(s);i<(int)(n);i++)
- //dp[i][j] cantidad de platos que puedo agarrar con i el plato de la base y j el plato del tope.
- int n,dp[512][512], dish[512];
- int main(){
- #ifdef JUAMPI
- freopen("12002.in","r",stdin);
- #endif
- for(scanf("%d",&n);n != 0; scanf("%d",&n)){
- dish[0] = 100000; dish[1] = 0;
- forsn(i,2,n+2) scanf("%d",&dish[i]);
- memset(dp,0,sizeof(dp));
- forsn(i,2,n+2) dp[i][i] = 1;
- forsn(i,2,n+2){
- forn(j,i){
- forn(k,i){
- if(dish[j] < dish[k]) continue;
- if(dish[i] >= dish[j] && dp[i][k] < dp[j][k]+1){
- dp[i][k] = dp[j][k]+1;
- }
- if(dish[i] <= dish[k] && dp[j][i] < dp[j][k]+1){
- dp[j][i] = dp[j][k]+1;
- }
- }
- }
- }
- int res = 0;
- forn(i,n+2)
- forn(j,n+2)
- if(res < dp[i][j]) res = dp[i][j];
- printf("%d\n",res);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment