Cod sursa(job #1571256)

Utilizator borscalinCalin-Stefan Georgescu borscalin Data 17 ianuarie 2016 17:24:53
Problema Secv Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <cstdio>
#include <algorithm>
#include <set>

using namespace std;

int v[5000];

typedef set <int> :: iterator ind;

set <int> s;

struct SECV{
  ind a;
  int b;
};

SECV aux;

int main(){
    freopen("secv.in","r",stdin);
    freopen("secv.out","w",stdout);
    int n,i,raspuns,m;
    scanf("%d",&n);
    for (i=0;i<n;i++){
      scanf("%d",&v[i]);
      s.insert(v[i]);
    }
    raspuns = 0;
    m = s.size();
    if (m == 1)
      raspuns = 1;
    for (i=0;i<n;i++){
      if (v[i] == *s.begin()){
        aux = { ++s.begin(),i + 1};
        while (aux.a != s.end() && aux.b <= n){
          if (v[aux.b] == *aux.a)
            aux.a++;
          if (aux.a == s.end() && aux.b - i + 1 > raspuns)
            raspuns = aux.b - i + 1;
          aux.b++;
        }
      }
    }
    printf("%d",(raspuns == 0) ? -1 : raspuns);
    return 0;
}