Cod sursa(job #1660289)

Utilizator ricardinhoricardinho ricardinho Data 22 martie 2016 22:32:47
Problema Secv Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.44 kb
#include <iostream>
#include <stdio.h>
#include <algorithm>

using namespace std;

int numere[5001] = {0};
int diferent[5001] = {0};

int N;

int make_different(int* a, int Num)
{
    int h = 1;

    sort(a, a + Num - 1);

    diferent[0] = numere[0];

    for(int i = 1; i < Num; i++)
    {
        if(numere[i] != numere[i-1])
            diferent[h++] = numere[i];
    }

    /*
    for(int o = 0; o < h; o++)
        cout << diferent[o] << " ";
    */
    return h;
}

int solve_me(int a)
{
    int my_min = 999999999;

    for(int i = 0; i < N - a - 1; i++)
    {
        int temp = 0;
        bool over = false;

        int j;

        for(j = i; j < N; j++)
        {
            if(numere[j] == diferent[temp])
            {
                temp++;

                if(temp >= a)
                {
                    over = true;
                    break;
                }
            }
        }

        if(over)
        {
            if(j - i + 1 < my_min)
            {
                my_min = j - i + 1;
            }
        }
    }

    //cout << endl << my_min;
    return my_min;

}

int main()
{
    freopen("secv.in", "r", stdin);
    freopen("secv.out", "r", stdout);

    scanf("%d", &N);

    for(int i = 0; i < N; i++)
    {
        scanf("%d", &numere[i]);
        diferent[i] = numere[i];
    }

    int y = make_different(numere, N);

    int z = solve_me(y);

    printf("%d", z);

    fclose(stdin);
    fclose(stdout);

    return 0;
}