Cod sursa(job #1585239)

Utilizator razvandRazvan Dumitru razvand Data 30 ianuarie 2016 21:17:48
Problema Secv Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.33 kb
#include <iostream>
#include <fstream>
#include <algorithm>

using namespace std;

ifstream in("secv.in");
ofstream out("secv.out");

long nr[5001];
long nr2[5001];
long nr3[5001];

int n;
int k;

int check(int m) {

    int z = 0;

    for(int i = m; i < n; i++) {

        if(nr[i] == nr3[z]) {
            z++;
        }

        if(z == k) {

            return i-m+1;

        }

    }

    return 10000;

}

int main() {

    in >> n;

    long maxNr = 0;

    for(int i = 0; i < n; i++) {
        in >> nr[i];
        if(nr[i] > maxNr)
            maxNr = nr[i];
    }

    if(n == 1) {
        out << 1;
        return 0;
    }

    for(int i = 0; i < n; i++)
        nr2[i] = nr[i];
    sort(nr2, nr2+n);

    for(int i = 0; i < n; i++)
        if(nr2[i] != nr2[i-1])
            nr3[k++] = nr2[i];

    int secv;
    int minA = 10000;

    for(int i = 0; i < n; i++) {

        if(nr[i] == nr3[0]) {

            secv = check(i);

            if(secv < minA) {

                minA = secv;

                cout << "FOUND " << i << " " << i+secv << endl;

            }

        }

    }

    if(minA == 10000)
        out << "-1";
    else
        out << minA;

    for(int i = 0; i < k; i++) {

        cout << nr3[i] << " ";

    }

    return 0;
}