Cod sursa(job #1572124)

Utilizator bciobanuBogdan Ciobanu bciobanu Data 18 ianuarie 2016 19:27:17
Problema Secv Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <fstream>
#include <algorithm>

const int MAX_N = 5000;

using namespace std;

int V[MAX_N];
int tmp[MAX_N];

int main() {
  ifstream in("secv.in");
  ofstream out("secv.out");
  in.tie(0);
  ios_base::sync_with_stdio(0);
  int N;
  int minLength;
  int numUnique;
  
  in >> N;
  for (int i = 0; i < N; i++) {
    in >> V[i];
    tmp[i] = V[i];
  }
  
  sort(tmp, tmp + N);
  numUnique = 1;
  for (int i = 1; i < N; i++) {
    if (tmp[i] != tmp[numUnique - 1]) {
      tmp[numUnique++] = tmp[i];
    }
  }
  
  minLength = N;
  for (int i = 0; i < N; i++) {
    if (V[i] != tmp[numUnique - 1])
      continue;
    
    int j = i - 1;
    int indx = numUnique - 2;
    while (indx >= 0  && j >= 0 && (i - j) < minLength) {
      indx -= (tmp[indx] == V[j]);
      j--;
    }
    if (indx == -1)
      minLength = min(minLength, i - j);
  }
  out << minLength << '\n';
  out.close();
  return 0;
}