Pagini recente » Cod sursa (job #3323263) | Cod sursa (job #3310066) | Cod sursa (job #3330822) | Cod sursa (job #3339359) | Cod sursa (job #3349585)
#include <fstream>
#include <vector>
#include <unordered_map>
#include <map>
long long Rezolva(size_t t, const std::vector<unsigned int> &a)
{
std::unordered_map<int, int> h;
long long sol, last;
sol = last = 0;
int i, n = a.size();
for(i = 0; i < n; i++)
{
h[a[i]]++;
while(h.size() > t)
{
h[a[last]]--;
if(h[a[last]]==0) h.erase(a[last]);
last++;
}
sol += (i - last + 1);
}
return sol;
}
int main()
{
std::ifstream fin("secv5.in");
std::ofstream fout("secv5.out");
int i, n, L, U;
fin >> n >> L >> U;
std::vector<unsigned int> v(n);
//std::map<unsigned int, int> fr;
for(i=0;i<n;i++)
{
fin >> v[i];
//fr[v[i]] = 1;
}
/*i = -1;
for(auto w : fr)
fr[w.first] = ++i;
for(i=0;i<n;i++)
v[i] = fr[v[i]];
fr.clear();
*/
fout << Rezolva(U, v) - Rezolva(L - 1, v) << "\n";
fin.close();
fout.close();
return 0;
}