Cod sursa(job #2271183)

Utilizator NOSCOPEPROKENDYMACHEAMACUMVREAU NOSCOPEPROKENDY Data 28 octombrie 2018 11:05:57
Problema Secventa 5 Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <fstream>

#include <unordered_map>



using namespace std;



const int NMAX = (1 << 20) + 10;

int n, l, u;

unsigned int v[NMAX];



long long Solve(const int &k)

{

	long long ret = 0;

	unordered_map <unsigned int, int> mp;

	for (int i = 1, j = 1;j <= n;++j)

	{

		mp[v[j]]++;

		while (mp.size() > k)

		{

			mp[v[i]]--;

			if (mp[v[i]] == 0)

				mp.erase(v[i]);

			++i;

		}

		ret = 1LL * ret + j - i + 1;

	}

	return ret;

}



int main()

{

	ifstream fin("secv5.in");

	ofstream fout("secv5.out");

	fin >> n >> l >> u;

	for (int i = 1;i <= n;++i)

		fin >> v[i];

	fout << Solve(u) - Solve(l - 1) << "\n";

	fin.close();

	fout.close();

	return 0;

}