Pagini recente » Cod sursa (job #1447245) | Cod sursa (job #1413581) | Cod sursa (job #586244) | Cod sursa (job #2734368) | Cod sursa (job #1311029)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#include<fstream>
#include<vector>
#define pb push_back
#define mp make_pair
#define mod 666013
#define maxn 1048581
using namespace std;
typedef unsigned int ui;
ifstream fin("secv5.in");
ofstream fout("secv5.out");
ui n,l,u,st1,st2,lst1,lst2,ind;
ui v[maxn],f1[maxn],f2[maxn];
vector < pair<ui,ui> > h[mod];
long long sol;
int hash_imp(unsigned int k)
{
return k%mod;
}
int search(ui x)
{
int k=hash_imp(x);
for(unsigned int i=0;i<h[k].size();i++)
if(h[k][i].first==x)
return h[k][i].second;
h[k].pb(mp(x,++ind));
return ind;
}
void del_1()
{
lst1--; f1[v[st1]]--; st1++;
}
void del_2()
{
while(f2[v[st2]]>1) { f2[v[st2]]--; st2++; }
lst2--; f2[v[st2]]--; st2++;
}
void formalize()
{
while(f1[v[st1]]>1) { f1[v[st1]]--; st1++; }
}
void cit()
{
ui x,i;
fin>>n>>l>>u;
st1=st2=1; lst1=lst2=0;
for(i=1;i<=n;i++)
{
fin>>x;
v[i]=search(x);
if(f1[v[i]]==0) lst1++;
if(f2[v[i]]==0) lst2++;
f1[v[i]]++; f2[v[i]]++;
if(lst1==l) formalize();
if(lst1>l) { del_1(); formalize(); }
if(lst2>u) del_2();
if(lst1>=l) sol+=st1-st2+1;
}
}
int main()
{
cit();
fout<<sol;
fclose(stdin);
fclose(stdout);
return 0;
}