Cod sursa(job #2152493)

Utilizator AlexandruLuchianov1Alex Luchianov AlexandruLuchianov1 Data 5 martie 2018 16:39:50
Problema Secv Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream in ("secv.in");
ofstream out ("secv.out");
int const nmax = 5000;
int dp[5 + nmax];
int v[5 + nmax];

int main() {
  int n;
  in>>n;
  int smin = 5 + nmax , smax = 0;
  for(int i = 1 ; i <= n ;i++){
    in>>v[i];
    dp[i] = -1;
    if(smax < v[i])
      smax = v[i];
  }

  for(int i = 1 ; i <= n ;i++){
    if(v[i] <= n){
      if(v[i] == 1)
        dp[v[i]] = i;
      else{
        if(0 < dp[v[i] - 1])
          dp[v[i]] = dp[v[i] - 1];
        else
          dp[v[i]] = -1;
      }
      if(0 < dp[v[i]] && (i - dp[v[i]] + 1) < smin && v[i] == smax){
        smin = (i - dp[v[i]] + 1);
      }
    }
  }
  if(smin == 5 + nmax)
    out<<-1;
  else
    out<<smin;
  return 0;
}