Pagini recente » Cod sursa (job #2654277) | Clasamentul arhivei de probleme | Cod sursa (job #1717054) | Cod sursa (job #655215) | Cod sursa (job #990341)
Cod sursa(job #990341)
#include <iostream>
#include <fstream>
#include <algorithm>
#include <unordered_map>
using namespace std;
#define Nmax 5002
#define oo ( 1 << 20 )
unordered_map <int, bool> h;
int a[Nmax];
int b[Nmax];
int N, M;
int best = oo;
void read()
{
ifstream f("secv.in");
f >> N;
for ( int i = 1; i <= N; ++i )
{
f >> a[i];
if ( h[ a[i] ] == 0)
{
h[ a[i] ] = 1;
b[ ++M ] = a[i];
}
}
f.close();
}
void solve()
{
for ( int i = 1; i <= N; ++i )
if ( a[i] == b[1] )
{
int matched = 1;
if ( matched == M )
best = 1;
for ( int j = i + 1; j <= N; ++j )
{
if ( a[j] == b[ matched + 1 ] )
matched++;
if ( matched == M )
{
best = min( best, j - i + 1 );
break;
}
}
}
}
void print()
{
ofstream g("secv.out");
if ( best == oo )
g << "-1\n";
else
g << best << "\n";
g.close();
}
int main()
{
read();
sort( b + 1, b + M + 1 );
solve();
print();
return 0;
}