Cod sursa(job #2311186)

Utilizator MoldovanAndrei1Moldovan Andrei MoldovanAndrei1 Data 2 ianuarie 2019 18:52:36
Problema Subsir 2 Scor 22
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.09 kb
#include <bits/stdc++.h>

using namespace std;

int v[5005];

int l[5005];
int fr1[5005];
int dp[5005];
int fr[5005];
int main()

{

    freopen("subsir2.in","r",stdin);

    freopen("subsir2.out","w",stdout);

    int n,i,j,k,st,dr;

    scanf("%d",&n);

    for(i=1;i<=n;i++)

        scanf("%d",&v[i]);
int m1=100005;
for(i=1;i<=n;i++)
{
    if(v[i]<m1)

    {
        m1=v[i];
      fr[i]=1;
    }}
    int max2=-100005;
    for(i=n;i>=1;i--)
    {
        if(v[i]<max2)
        {
            max2=v[i];
            fr1[i]=1;
        }
    }
    dp[n]=1;
    int max1=fr[n];

    for(i=n-1;i>0;i--)

    {

     for(j=i+1;j<=n;j++)

     {

         if(v[i]>v[j])break;

         if(v[i]==v[j])

         {

             if((dp[j]+1)>dp[i])dp[i]=dp[j]+1;
             if(dp[i]==1)dp[i]=fr1[i];
             max1=max(max1,fr[i]*dp[i]);

             break;

         }

         dp[i]=max(dp[i],dp[j]+1);
         if(dp[i]==1)dp[i]=fr1[i];
         max1=max(max1,fr[i]*dp[i]);

     }

    }

    printf("%d\n",max1);

    return 0;

}