Cod sursa(job #1973119)

Utilizator DruffbaumPopescu Vlad Druffbaum Data 24 aprilie 2017 15:15:53
Problema Secv Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <cstdio>
#include <map>
#include <algorithm>

const int INF = 2e9;
const int MAXN = 5e3;

int v[MAXN + 1], s[MAXN + 1];
std::map <int, bool> u;

int main() {
  int n, sol, m;
  FILE *f = fopen("secv.in", "r");
  fscanf(f, "%d", &n);
  m = 0;
  for (int i = 1; i <= n; ++i) {
    fscanf(f, "%d", &v[i]);
    if (!u[v[i]]) {
      u[v[i]] = 1;
      s[++m] = v[i];
    }
  }
  fclose(f);
  std::sort(s + 1, s + m + 1);
  sol = INF;
  for (int i = 1; i <= n; ++i) {
    if (s[1] == v[i]) {
      int in = 1;
      for (int j = i + 1; j <= n + 1; ++j) {
        if (in == m) {
          int curr = j - i;
          if (curr < sol) {
            sol = curr;
          }
          break;
        } else if (s[in + 1] == v[j]) {
          ++in;
        }
      }
    }
  }
  f = fopen("secv.out", "w");
  if (sol == INF) {
    fprintf(f, "-1\n");
  } else {
    fprintf(f, "%d\n", sol);
  }
  fclose(f);
  return 0;
}