Pagini recente » Cod sursa (job #2362560) | Cod sursa (job #2296286) | Cod sursa (job #2478035) | Cod sursa (job #402861) | Cod sursa (job #2333834)
#include <fstream>
#include <algorithm>
#define MAX 5001
using namespace std;
int v[MAX], copie[MAX], ultim[MAX], dp[MAX][MAX];
int main()
{
int n, i, j, contor = 0, lungime = 2e9;
ifstream fin("secv.in");
ofstream fout("secv.out");
fin >> n;
for(i = 1; i <= n; i++)
{
fin >> v[i];
copie[i] = v[i];
}
sort(v + 1, v + n + 1);
contor++;
for(i = 2; i <= n; i++)if(v[i] != v[i - 1])contor++;
for(i = 1; i <= n; i++)
{
dp[i][i] = 1;
if(dp[i][i] == contor && lungime > 1)lungime = 1;
ultim[i] = v[i];
for(j = i + 1; j <= n; j++)
{
dp[i][j] = dp[i][j - 1] + (v[j] > ultim[j - 1]);
if(dp[i][j] == contor && lungime > j - i + 1)lungime = j - i + 1;
if(v[j] > ultim[j - 1])ultim[j] = v[j];
else ultim[j] = ultim[j - 1];
}
}
fout << lungime;
fin.close();
fout.close();
return 0;
}