Pagini recente » Cod sursa (job #3268272) | Cod sursa (job #237108) | Cod sursa (job #3176686) | Cod sursa (job #1131786) | Cod sursa (job #3142454)
#include <fstream>
#include <vector>
#include <algorithm>
#include <map>
using namespace std;
ifstream cin("secv.in");
ofstream cout("secv.out");
long long n ;
long long v [ 50001 ];
map<long long , long long > dp ;
map<long long , long long> mp ;
map<long long , long long> frv;
int main()
{
cin >> n;
vector<long long > a;
long long dist = 1e9;
long long maxx = -1;
for ( int i = 1; i <= n ; i ++ )
{
cin >> v [ i ] ;
maxx = max ( maxx , v[ i ] );
dp [ i ] = -1;
frv [v [ i ]] ++ ;
if ( frv [v[ i ] ] == 1 )
a.push_back(v [ i ]);
}
sort ( a.begin() , a.end() );
for ( int i = 0 ; i < a.size() ; i ++ )
{
mp [ a[ i ]] = i ;
}
for ( int i = 1; i <= n ; i ++ )
{
if ( v [ i ] == 1 )
{
dp [ 1 ] == i ;
if ( v [ i ] == maxx)
dist = 1 ;
}
else
{
if ( dp [ a [ mp [ v[ i ] ] - 1 ]] != -1)
{
dp [ v [ i] ] = dp [ a [ mp [ v[ i ] - 1 ] ] ] ;
if ( v [ i ] == maxx )
dist = min(i - dp [ v[ i ]] + 1, dist) ;
}
}
}
if ( dist == 1e9 )
cout << -1 << '\n';
else
cout << dist << '\n';
return 0;
}