Cod sursa(job #2162025)

Utilizator rares_ciocieaRares Andrei Ciociea rares_ciociea Data 11 martie 2018 23:13:31
Problema Secv Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.22 kb
#include <fstream>
#include <algorithm>
using namespace std;
ifstream in("secv.in");
ofstream out("secv.out");
int v[5004],nrdis[5004];
int subsir[5004];
int main()
{
    int n,i,d=0,cnt=0,min=500000,p=0,j;
    in>>n;
    for(i=1;i<=n;i++)
        {in>>v[i];
        subsir[i]=v[i];
        }
    sort(v+1,v+n+1);
    nrdis[0]=-4324;
    for(i=1;i<=n;i++)
        if(v[i]!=v[i-1])
        {
            d++;
            nrdis[d]=v[i];
        }
    for(i=1;i<=n;i++)
        v[i]=subsir[i];
    if(d==1)
    {
        out<<1;
        return 0;
    }
    for(i=1;i<=n-d+1;i++)
    {
        if(nrdis[1]==v[i])
            {
                p=1;
                cnt=2;
                subsir[p]=nrdis[1];
                for(j=i+1;j<=n;j++)
                {
                    p++;
                    subsir[p]=v[j];
                    if(subsir[p]==nrdis[cnt])
                        cnt++;
                    if(cnt==d+1)
                    {
                        if(min>j-i+1)
                            min=j-i+1;
                        break;
                    }
                }
            }
    }
    if(min==500000)
        out<<-1;
    else
    out<<min;

    return 0;
}