Pagini recente » Cod sursa (job #1503119) | Cod sursa (job #2294875) | Cod sursa (job #2793656) | Cod sursa (job #1680766) | Cod sursa (job #483871)
Cod sursa(job #483871)
#include<iostream>
#include<fstream>
#include<algorithm>
using namespace std;
ifstream f("secv.in");
ofstream g("secv.out");
int v[5001],a[5001],valid[5001],sol[5001],poz[5001],ast,n,m,r,x;
int caut(int x, int n)
{
int pas=1<<16,i;
for(i=0;pas;pas>>=1)
if(i+pas<=n&&a[i+pas]<x)
i+=pas;
return i+1;
}
int main()
{
int i;
f>>n;
for(i=1;i<=n;i++)
{
f>>x;
r=caut(x,m);
a[r]=x;
v[i]=r;
if(r>m)
m++;
}
for(i=1;i<=n;i++)
cout<<v[i]<<" ";
valid[0]=true;
for(i=1;i<=n;i++)
{
ast=v[i];
if(valid[ast-1])
{
valid[ast]=true;
poz[ast]=i;
if(v[i]==a[1])
sol[ast]=1;
else
sol[ast]=sol[ast-1]+i-poz[ast-1];
}
}
g<<sol[m];
return 0;
}