Cod sursa(job #2209767)

Utilizator Eduard24Eduard Scaueru Eduard24 Data 4 iunie 2018 17:33:17
Problema Secventa 5 Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.26 kb
#include <iostream>
#include <fstream>
#include <algorithm>
#include <cstring>
using namespace std;
ifstream fin("secv5.in");
ofstream fout("secv5.out");

unsigned int v[1048580],i,j,n,u,l,k,w,nrs,nrdif;
int f[(1<<20)+2];
struct element
{
    unsigned int val,poz;
}a[1048580];

bool cmp (element a, element b)
{
    if(a.val<b.val)
    {
        return true;
    }
    else
    {
        return false;
    }
}

int main()
{
    fin>>n>>l>>u;
    for(i=1;i<=n;i++)
    {
        fin>>v[i];
        a[i].val=v[i];
        a[i].poz=i;
    }
    sort(a+1,a+n+1,cmp);
    k=0;
    w=0;
    for(i=1;i<=n;i++)
    {
        if(w<a[i].val)
        {
            k++;
            w=a[i].val;
            v[a[i].poz]=k;
        }
        else
        {
            v[a[i].poz]=k;
        }
    }
    nrs=0;
    for(i=1;i+l-1<=n;i++)
    {
        memset(f,0,((1<<20)+2)*sizeof(int));
        nrdif=0;
        for(j=i;j<=n && nrdif<=u;j++)
        {
            if(f[v[j]]==0)
            {
                nrdif++;
                f[v[j]]=1;
            }
            if(nrdif>=l && nrdif<=u)
            {
                nrs++;
            }
        }
    }
    fout<<nrs;
    fin.close();
    fout.close();
    return 0;
}