Cod sursa(job #1565449)

Utilizator ElemelixEle Melix Elemelix Data 10 ianuarie 2016 19:36:11
Problema Secventa 5 Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <fstream>
#include <map>
#include <iostream>
#include <vector>

using namespace std;

int n;
vector<long long int> a;
map<long long int,long long int> hashMap;
long long int nrSecv(int upper)
{
    hashMap.clear();
    long long int secv = 0, j = 0;
    for(int i = 0; i < n; i++)
    {
        hashMap[a[i]]++;
        while(hashMap.size() > upper)
        {
            hashMap[a[j]]--;
            if(!hashMap[a[j]])
                hashMap.erase(a[j]);
            j++;
        }
        secv += (i - j + 1);
    }
    return secv;
}
int main()
{
    int l, u;
    ifstream in("secv5.in");
    in >> n >> l >> u;
    for(int i = 0; i < n; i++)
    {
        long long int x;
        in >> x;
        a.push_back(x);
    }
    in.close();
    ofstream out("secv5.out");
    out << nrSecv(u) - nrSecv(l - 1);
    out.close();
}