Pagini recente » Cod sursa (job #1324420) | Cod sursa (job #2625808) | Cod sursa (job #3221465) | Cod sursa (job #1546565) | Cod sursa (job #2496821)
#include <fstream>
using namespace std;
ifstream fin("subsir2.in");
ofstream fout("subsir2.out");
int a[5005], lis[5005], n;
int main()
{
int M;
fin >> n;
for(int i = 1; i <= n; i++)
fin >> a[i];
lis[n] = 1;
for(int i = n - 1; i > 0; i--)
{
M = 0;
for(int j = i + 1; j <= n; j++)
if(lis[j] > M && a[j] > a[i])
M = lis[j];
lis[i] = 1 + M;
}
int p = 1;
for(int i = 2; i <= n; i++)
if(lis[p] < lis[i]) p = i;
else if(lis[p] == lis[i] && a[i] < a[p])
p = i;
fout << lis[p] <<" \n" << p <<" ";
int L = lis[p] - 1;
int poz = p;
while(L > 0)
{
M = 1e7 + 1;
for(int i = p + 1; i <= n; i++)
if(lis[i] == L && a[i] < M && a[i] > a[poz])
{
p = i;
M = a[i];
}
L--;
poz = p;
fout << p <<" ";
}
return 0;
}