Pagini recente » Cod sursa (job #1029371) | Cod sursa (job #1154734) | Cod sursa (job #48445) | Cod sursa (job #2212486) | Cod sursa (job #1650228)
#include <fstream>
#define w 100005
using namespace std;
unsigned int v[w];
unsigned int best[w];
unsigned int poz[w];
unsigned int bn(unsigned int x,unsigned int i, unsigned int j)
{
unsigned int mid;
while(i<=j)
{
mid=(i+j)/2;
if (v[best[mid]]>x)
i=mid+1;
else
j=mid-1;
}
return i;
}
int main()
{
ifstream f("scmax.in");
ofstream g("scmax.out");
int i,n,j,m=0;
f>>n;
for (i=1;i<=n;i++)
f>>v[i];
for (i=n;i>=1;i--)
{
j=bn(v[i],1,m);
if (j>m)
{
poz[i]=best[j-1];
m=j;
best[j]=i;
}
else
{
poz[i]=best[j-1];
if (v[best[j]]<v[i]) best[j]=i;
}
}
g<<m<<'\n';
j=best[m];
while (j!=0)
{
g<<v[j]<<' ';
j=poz[j];
}
f.close();
g.close();
return 0;
}