Cod sursa(job #2333834)

Utilizator PetrescuAlexandru Petrescu Petrescu Data 1 februarie 2019 23:34:22
Problema Secv Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <fstream>
#include <algorithm>
#define MAX 5001

using namespace std;

int v[MAX], copie[MAX], ultim[MAX], dp[MAX][MAX];
int main()
{
    int n, i, j, contor = 0, lungime = 2e9;

    ifstream fin("secv.in");
    ofstream fout("secv.out");

    fin >> n;

    for(i = 1; i <= n; i++)
    {
        fin >> v[i];
        copie[i] = v[i];
    }

    sort(v + 1, v + n + 1);

    contor++;
    for(i = 2; i <= n; i++)if(v[i] != v[i - 1])contor++;

    for(i = 1; i <= n; i++)
    {
        dp[i][i] = 1;
        if(dp[i][i] == contor && lungime > 1)lungime = 1;
        ultim[i] = v[i];
        for(j = i + 1; j <= n; j++)
        {
            dp[i][j] = dp[i][j - 1] + (v[j] > ultim[j - 1]);

            if(dp[i][j] == contor && lungime > j - i + 1)lungime = j - i + 1;
            if(v[j] > ultim[j - 1])ultim[j] = v[j];
            else ultim[j] = ultim[j - 1];
        }
    }

    fout << lungime;

    fin.close();
    fout.close();

    return 0;
}