Cod sursa(job #2858509)

Utilizator Botnaru_VictorBotnaru Victor Botnaru_Victor Data 27 februarie 2022 18:31:51
Problema Secv Scor 30
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <bits/stdc++.h>

using namespace std;

ifstream f("secv.in");
ofstream g("secv.out");

int v[5001],s[5001],nor[5001];
int n;
unsigned int d[5001][5001];
bool cmp(const int &a, const int &b)
{
    return v[a]<v[b];
}

int main()
{
    f>>n;
    for(int i=0;i<n;i++)
    {
        f>>v[i];
        s[i]=i;
    }
    sort(s,s+n,cmp);
    int k=0;
    vector<int> ser;
    for(int i=0;i<n;i++)
    {
        if(i==0||v[s[i]]!=v[s[i-1]]) k++;
        nor[s[i]]=k;
    }

    for(int i=0;i<n;i++)
    {
        for(int j=1;j<=k;j++)
        {
            d[i][j]=(i!=0?d[i-1][j]:(INT_MAX-1))+1;
        }
        if(nor[i]==1) d[i][1]=1;
        else if(i!=0) d[i][nor[i]]=min(d[i][nor[i]],d[i-1][nor[i]-1]+1);



        //for(int j=1;j<=k;j++)
        //{
        //    g<<d[i][j]<<' ';
       // }
        //g<<'\n';
    }
    if(d[n-1][k]>n) g<<-1;
    else g<<d[n-1][k];




    return 0;
}