Cod sursa(job #2318866)

Utilizator canmihaiCancescu Mihai canmihai Data 13 ianuarie 2019 16:28:13
Problema A+B Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.13 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("lautari.in");
ofstream fout("lautari.out");
int n,minim,maxim,x,f[100010],e[100010],cop[100010],fn,zero;
int main(){
    fin>>n>>minim>>maxim;
    for(int i=1;i<=n;i++){
        fin>>x;
        if(e[x]==0)
            f[i]=f[i-1]+1;
        else
            f[i]=f[i-1];
        e[x]=1;
    }
    for(int i=1;i<=n;i++)
        cop[i]=f[i];
    //f[i][j]= cate numere unice s-au gasit pana la j incepand cu i
    // dar tin minte o singura linie pe care o obt din precedenta
    // nu cred ca merge
        for(int i=1;i<=n;i++){
        if(i!=1)
            for(int t=1;t<=n;t++){
            if(t<i){
                zero++;
                f[t]=0;
            }
            if(t==i)
                f[t]=1;
            if(t>i)
                f[t]=cop[t-i+zero-1];
            //cout<<f[t];
        }//cout<<endl;
        zero=0;
        for(int j=i;j<=n;j++)
            if(f[j]-f[i]+1>=minim&&f[j]-f[i]+1<=maxim){
               // cout<<i<<" "<<j;
                fn++;
            }


    }
    fout<<fn;






    return 0;
}