Pagini recente » Cod sursa (job #1784673) | Cod sursa (job #2690553) | Cod sursa (job #1931184) | Cod sursa (job #2525246) | Cod sursa (job #1221144)
# include <fstream>
# include <iostream>
# define i64 long long
using namespace std;
ifstream fi("secv5.in");
ofstream fo("secv5.out");
const int mod=666013;
typedef struct node
{
i64 x;
node *next;
} *nod;
nod h[mod];
i64 S[1<<21];
bool find(i64 x)
{
i64 m=x%mod;
for (nod p=h[m];p;p=p->next)
if (p->x==x) return 1;
nod p=new node;
p->x=x;p->next=h[m];h[m]=p;
return 0;
}
int secv(i64 x,i64 n)
{
if (!x) return 0;
i64 k=1,l=1,p=0;
for (int i=1;i<=n;++i)
{
if (S[i]!=S[i-1]) ++l;
if (l>x)
{
if (S[k]==S[k-1])
while (S[k]==S[k-1]) ++k;else ++k;
--l;
}
p+=(i-S[k]+1);
}
return p;
}
int main(void)
{
S[0]=1;
i64 p,u,n;
fi>>n>>p>>u;
for (int i=1;i<=n;++i)
{
i64 x;
fi>>x;
if (find(x)) S[i]=S[i-1]; else S[i]=i;
}
fo<<(secv(u,n)-secv(p-1,n))<<"\n";
}