Pagini recente » Cod sursa (job #1889909) | Cod sursa (job #1601557) | Cod sursa (job #1769325) | Cod sursa (job #2886183) | Cod sursa (job #751397)
Cod sursa(job #751397)
#include <fstream>
#include <algorithm>
using namespace std;
typedef struct {
int a;
int b;
} cutzu;
int N;
cutzu v[5010];
int x[5010];
void Citire ()
{
ifstream fin ("secv.in");
fin >> N;
for (int i = 0; i < N; i++)
{
fin >> v[i].a;
v[i].b = i;
}
fin.close ();
}
inline int cmp (cutzu x, cutzu y)
{
return (x.a < y.a);
}
int dog = 1;
void Normalize ()
{
sort (v, v + N, cmp);
int aux = v[0].a;
x[v[0].b] = 1;
for (int i = 1; i < N; i++)
{
if (v[i].a > aux)
{
dog++;
aux = v[i].a;
}
x[v[i].b] = dog;
}
}
int Business ()
{
int minuscul = 50100;
dog++;
int i, j = 0;
int siruri[5010][2];
for (i = 0; i < N; i++)
{
if (x[i] == 1) break;
}
siruri[0][0] = i;
siruri[0][1] = 2;
for (; i < N; i++)
{
if (x[i] == 1)
{
siruri[++j][0] = i;
siruri[j][1] = 2;
}
else
{
for (int k = 0; k <= j; k++)
{
if (siruri[k][1] == x[i])
{
siruri[k][1]++;
if (siruri[k][1] == dog && i - siruri[k][0] < minuscul) minuscul = i - siruri[k][0];
}
}
}
}
return minuscul;
}
void Scriere ()
{
ofstream fout ("secv.out");
if (N == 1)
{
fout << "1";
fout.close ();
return;
}
int y = Business ();
if (y == 50100) fout << "-1";
else fout << y + 1;
fout.close ();
}
int main ()
{
Citire ();
Normalize ();
Scriere ();
return 0;
}