Cod sursa(job #2257318)

Utilizator iulius510iulius alexandru iulius510 Data 9 octombrie 2018 22:24:50
Problema Subsir crescator maximal Scor 5
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include <fstream>
#include <iostream>
#include <algorithm>
using namespace std;
#define zeros(x) (x^(x-1)&x)
ifstream f("scmax.in");
ofstream g("scmax.out");
int n,aib[100001],sol[100001],p,rad,M;
struct element
{
    int val;
    int ind;
}v[100001];
bool cmp(struct element x,struct element y)
{
    return (x.val<y.val);
}
void ad(int x,int val)
{
    for(int i=x;i<=n;i+=zeros(i))
        aib[i]+=val;
}
int calcul(int x)
{   int sum=0;
    for(int i=x;i>0;i-=zeros(i))
        sum+=aib[i];
    return sum;
}
int main()
{
    f>>n;
    for(int i=1; i<=n; i++)
    {
        f>>v[i].val;
        v[i].ind=i;
    }
    sort(v,v+n+1,cmp);
    ad(v[1].ind,1);
    for(int i=2;i<=n;i++)
    {   if(v[i].val!=v[i-1].val)
        ad(v[i].ind,1);
        M=max(M,calcul(v[i].ind));

    }
    g<<M;
    return 0;
}