Cod sursa(job #2012420)

Utilizator amaliarebAmalia Rebegea amaliareb Data 18 august 2017 18:04:43
Problema Secv Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.12 kb
#include <iostream>
#include <fstream>
#include <algorithm>
#include <cmath>

using namespace std;
struct miau{int val, poz;} x[5005];
int n,i,j,k,m=0,semn,C,eq,s,v[5005],val,d[5005][5005];
ifstream f("secv.in");
ofstream g("secv.out");

bool cmp(miau a, miau b)
{
    return a.val<b.val;
}

int main()
{
    f>>n;
    for(i=1;i<=n;i++)
    {
        f>>v[i];
        x[i]={v[i],i};
    }
    sort(x+1,x+n+1,cmp);
    val=x[1].val; m=1;
    v[x[1].poz]=1;
    for(i=2;i<=n;i++)
    {
        if(x[i].val==val) v[x[i].poz]=m;
        else v[x[i].poz]=++m, val=x[i].val;
    }
    if(v[1]==1) d[1][v[1]]=1;
    for(i=2;i<=n;i++)
    {
        for(j=1;j<=m;j++)
        {
            if(d[i-1][j]>0) d[i][j]=d[i-1][j]+1;
        }
        if(v[i]==1) d[i][v[i]]=1;
        else
        {
            if(d[i-1][v[i]]>0 && d[i-1][v[i]-1]>0) d[i][v[i]]=min(d[i-1][v[i]]+1,d[i-1][v[i]-1]+1);
            else if(d[i-1][v[i]]>0) d[i][v[i]]=d[i-1][v[i]]+1;
            else if(d[i-1][v[i]-1]>0) d[i][v[i]]=d[i-1][v[i]-1]+1;
            else d[i][v[i]]=0;
        }
    }
    g<<d[n][m]<<'\n';
    return 0;
}