Cod sursa(job #761167)

Utilizator visanrVisan Radu visanr Data 25 iunie 2012 01:13:07
Problema Secv Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <cstdio>
#include <cstdlib>
#include <algorithm>
using namespace std;

int v[5010], c[5010], n, index, sol;


int main()
{
    freopen("secv.in", "r", stdin);
    freopen("secv.out", "w", stdout);
    int i, j, m = 0;
    sol = (1 << 16);
    scanf("%i", &n);
    for(i = 1; i <= n; i++)
    {
          scanf("%i", &v[i]);
          c[i] = v[i];
    }
    sort(c + 1, c + n + 1);
    c[0] = -1;
    for(i = 1; i <= n; i++)
          if(c[i] != c[i - 1])
                  c[++m] = c[i];
    for(i = 1; i <= n - m + 1; i++)
    {
          index = i;
          for(j = 1; j <= m && index <= n;)
          {
                while((v[index] != c[j]) && (index <= n)) index ++;
                while((v[index] == c[j]) && (index <= n) && (j <= m)) j ++, index ++;
          }
          if((j == m + 1) && (index - i < sol)) sol = index - i;
    }
    if(sol == (1 << 16)) printf("-1\n");
    else printf("%i\n", sol);
    scanf("%i", &i);
    return 0;
}