Pagini recente » Cod sursa (job #295411) | Cod sursa (job #3268893) | Cod sursa (job #513553) | Cod sursa (job #1081951) | Cod sursa (job #2280023)
//cautare binara fututa
#include <iostream>
#include <fstream>
using namespace std;
int e[100000], p[100000], k=0, l=0;
int cautbin (int x)
{
int lsi=1,lfi=k,m;
while (lsi<lfi)
{
m=(lsi+lfi)/2;
if (e[m] < x)
lsi=m+1;
else
lfi=m;
}
m=(lsi+lfi)/2;
if (e[m] < x)
m++;
return m;
}
int main()
{
int n,x;
ifstream fin ("scmax.in");
ofstream fout ("scmax.out");
fin>>n;
for (int i=0;i<n;i++)
{
fin>>x;
if (x>e[k])
{
e[++k]=x;
p[++l]=k;
}
else if (x!=e[k])
{
int poz=cautbin(x);
e[poz]=x;
p[++l]=poz;
}
}
int maxi=0;
for (int i=1;i<=l;i++)
if (p[i]>maxi)
maxi=p[i];
fout<<maxi<<"\n";
for (int i=1;i<=k;i++)
fout<<e[i]<<" ";
return 0;
}