Cod sursa(job #1899202)

Utilizator usureluflorianUsurelu Florian-Robert usureluflorian Data 2 martie 2017 16:28:27
Problema Secv Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.19 kb
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f ("secv.in");
ofstream g ("secv.out");
int n,v[5001],t[5001],a[5001],k,r=5001,i,j,p;
int main()
{
    f>>n;
    for(i=1;i<=n;++i) //citire
    {
        f>>v[i];
        t[i]=v[i];
    }
    sort(t+1,t+n+1); //sortam
    k=1;
    a[k]=t[1]; //primul e si primul din cele sortate
    for(i=2;i<=n;i++) if(t[i]!=a[k]) {++k;a[k]=t[i];} //determinam in a, multimea valorilor
    for(i=1;i<=n;i++)
    {
        if(v[i]==a[1]) //am gasit valoarea de start
        {
            p=2;
            for(j=i+1;j<=n;++j) //continuam cu gasirea celorlalte
            {
                if(v[j]==a[p]) //daca am gasit valoare
                {
                    ++p; //cautam pe urmatoarea
                    if(p==k+1) //daca am ajuns la toate elementele
                    {
                        if(j-i+1<r) r=j-i+1; //schimbam cea mai buna valoare
                        break; //incercam si cu alta posibilitate
                    }
                }
            }
        }
    }
    if(k==1) r=1;
    if(r!=5001) g<<r; //daca am schimbat valoarea
    else g<<"-1"; //daca nu am gasit subsir
    return 0;
}