Pagini recente » Cod sursa (job #2053736) | Monitorul de evaluare | Cod sursa (job #2414497) | Cod sursa (job #806743) | Cod sursa (job #2951834)
#include <fstream>
#include <unordered_map>
using namespace std;
ifstream fin("secv5.in");
ofstream fout("secv5.out");
#define int long long
const int max_size = (1 << 20) + 1;
int v[max_size], n;
unordered_map<int, int> m;
int secvente(int dif)
{
int st = 1, sol = 0, k = 0;
for (int i = 1; i <= n; i++)
{
if (m[v[i]] == 0)
{
k++;
}
m[v[i]]++;
while (st <= i && k > dif)
{
m[v[st]]--;
if (m[v[st]] == 0)
{
k--;
}
st++;
}
sol += i - st + 1;
}
m.clear();
return sol;
}
int main()
{
int l, u;
fin >> n >> l >> u;
for (int i = 1; i <= n; i++)
{
fin >> v[i];
}
fout << secvente(u) - secvente(l - 1);
}