Pagini recente » Cod sursa (job #2210167) | Cod sursa (job #3162556) | Cod sursa (job #1399549) | Cod sursa (job #2281898) | Cod sursa (job #3142456)
#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 ( mp [ v[ i ] ] == 0 )
{
dp [ v [ i ] ] = 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;
}