Cod sursa(job #2774575)

Utilizator Raresr14Rosca Rares Raresr14 Data 12 septembrie 2021 00:02:14
Problema Secventa 5 Scor 30
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.16 kb
#include <bits/stdc++.h>
#define MOD 1000007
using namespace std;
ifstream fin("secv5.in");
ofstream fout("secv5.out");
unsigned int p,u,n,i,nr,x,sol,f[2000010],w[2000010];
pair<unsigned int,unsigned int> v[2000010];
vector<unsigned int> H[1000010];
int in(unsigned int x){
    for(int i=0;i<H[x%MOD].size();i++)
        if(H[x%MOD][i]==x)
            return 1;
    return 0;
}
int main(){
    fin>>n>>p>>u;
    for(i=1;i<=n;i++)
        fin>>w[i];
    for(i=1;i<=n;i++){
        if(w[i]!=w[i-1]){
            nr++;
            x=w[i];
            v[nr].second=x;
            if(!in(x)){
                H[x%MOD].push_back(x);
                v[nr].first=v[nr-1].first+1;
            }else
                v[nr].first=v[nr-1].first;
        }
        f[nr]++;
    }
    for(i=1;i<nr;i++){
        int crt=0;
        int transport=0;
        for(int j=i+1;j<=nr;j++){
            if(v[j].first-v[i].first>=p-1&&v[j].first-v[i].first<u)
                crt+=f[j];
            if(v[j].second==v[i].second)
                transport=1;
            v[j].first+=transport;
        }
        sol+=f[i]*crt;
    }
    fout<<sol;

    return 0;
}