Pagini recente » Cod sursa (job #2766155) | Cod sursa (job #2827525) | Cod sursa (job #2715970) | Cod sursa (job #41865) | Cod sursa (job #1322652)
#include<stdio.h>
#include<unordered_map>
using namespace std;
const int NMAX = (1 << 20) + 1;
unsigned int v[NMAX];
unordered_map<unsigned int, unsigned int> h;
int n,l,u;
long long secv(int x)
{
h.clear();
long long s = 0;
int j = 1;
for (int i = 1; i <= n; i++)
{
h[v[i]]++;
while (x < h.size())
{
h[v[j]]--;
if (h[v[j]] == 0)
h.erase(v[j]);
j++;
}
s += (i - j + 1);
}
return s;
}
void solve()
{
scanf("%d%d%d",&n,&l,&u);
for(int i=1;i<=n;++i) scanf("%d",&v[i]);
printf("%lld",secv(u)-secv(l-1));
}
int main()
{
freopen("secv5.in","r",stdin);
freopen("secv5.out","w",stdout);
solve();
/*scanf("%d%d%d",&n,&l,&u);
fin >> n >> l >> u;
for (int i = 1; i <= n; i++)
fin >> v[i];
fout << secv(u) - secv(l - 1);
*/
}