Pagini recente » Cod sursa (job #1465866) | Cod sursa (job #2569739) | Cod sursa (job #1487189) | Cod sursa (job #52866) | Cod sursa (job #2950474)
#include <fstream>
#include <unordered_map>
using namespace std;
ifstream in ("secv5.in");
ofstream out ("secv5.out");
#define int long long
const int max_size = (1 << 20) + 1;
int a[max_size], n;
unordered_map <int, int> m;
int solve (int dif)
{
m.clear();
int st = 1, ans = 0, ct = 0;
for (int i = 1; i <= n; i++)
{
if (m[a[i]] == 0)
{
ct++;
}
m[a[i]]++;
while (st <= i && ct > dif)
{
m[a[st]]--;
if (m[a[st]] == 0)
{
ct--;
}
st++;
}
ans += i - st + 1;
//out << i << " " << st << '\n';
}
return ans;
}
signed main ()
{
int l, u;
in >> n >> l >> u;
for (int i = 1; i <= n; i++)
{
in >> a[i];
}
out << solve(u) - solve(l - 1);
in.close();
out.close();
return 0;
}