Cod sursa(job #2467425)

Utilizator MateiAruxandeiMateiStefan MateiAruxandei Data 4 octombrie 2019 13:07:51
Problema Secventa 5 Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.09 kb
#include <fstream>
#include <unordered_map>

using namespace std;

ifstream fin("secv5.in");
ofstream fout("secv5.out");

unordered_map<int, int> mp;
int v[(1 << 21)];

int main()
{
    int n, l, u;
    fin >> n >> l >> u;

    for(int i = 1; i <= n; ++i)
        fin >> v[i];

    bool fs = 0;
    int nrAp = 0, rez = 0, p1 = 1, p2 = 1;
    while(p2 <= n && p1 <= n)
    {
        if(nrAp > u || fs)
        {
            mp[v[p1]] --;
            if(mp[v[p1]] == 0)
                --nrAp;
            if(nrAp <= u && nrAp >= l)
                ++rez;
            ++p1;
            if(fs)
            {
                mp.clear();
                fs = 0;
                p2 = p1;
            }
        }
        else if(!fs)
        {
            if(mp.find(v[p2]) == mp.end())
                mp[v[p2]] = 0;
            mp[v[p2]]++;
            if(mp[v[p2]] == 1)
                ++nrAp;
            if(nrAp >= l && nrAp <= u)
                ++rez;
            if(p2 == n) fs = 1;
            else ++p2;
        }
    }
    fout << rez << '\n';
    return 0;
}