Pagini recente » Cod sursa (job #185345) | Arhiva de probleme | Istoria paginii preoni-2008/runda-3 | Cod sursa (job #185518) | Cod sursa (job #182950)
Cod sursa(job #182950)
#include<fstream.h>
#define g 100002
using namespace std;
int a[g],b[g],c[g],d[g],n,s;
int poz,ok;
ifstream be ("scmax.in");
ofstream ki ("scmax.out");
void binsearch (int value)
{
int left=1,middle,end=s; poz=-1;
while (left<=end)
{
middle=(left+end)/2;
if (b[middle]>=value)
{
poz=middle;
end=middle-1;
}
else
left=middle+1;
}
}
int main()
{
int i;
be>>n;
for (i=1;i<=n;i++)
{
be>>a[i];
binsearch (a[i]);
if (poz==-1)
{
b[++s]=a[i];
c[i]=s;
}
else
{
b[poz]=a[i];
c[i]=poz;
}
}
be.close();
ok=s;
ki<<s<<'\n';
while (ok)
{
while (ok!=c[i])
i--;
d[ok]=a[i];
ok--;
}
for (i=1;i<=s;i++)
{
ki<<d[i];
if (i<s)
ki<<" ";
}
ki<<'\n';
ki.close();
return 0;
}