Pagini recente » Cod sursa (job #1306076) | Monitorul de evaluare | Cod sursa (job #104792) | Cod sursa (job #2275981) | Cod sursa (job #1221314)
# include <fstream>
# include <iostream>
# include <cstring>
# define int long long
using namespace std;
ifstream fi("secv5.in");
ofstream fo("secv5.out");
const int mod=666013;
typedef struct node
{
int x,y;
node *next;
} *nod;
nod h[mod];
int n,p,u;
int S[1<<21],V[1<<21];
int read()
{
int p=0;
char c[30];
fi>>c;
int k=strlen(c);
for (int i=0;i<k;++i) p=p*10+c[i]-'0';
return p;
}
int secv(int x)
{
if (!x) return 0;
int p=0;
for (int i=1,a=0,b=0;i<=n;++i)
{
while (a<=x && b<=n)
if (++V[S[++b]]==1)
++a;
--V[S[b]];
if (!V[S[b]]) --a;
--V[S[i]];
if (!V[S[i]]) --a;
--b;
p+=(b-i+1);
}
return p;
}
main(void)
{
S[0]=1;
int b=0;
n=read();p=read();u=read();
for (int i=1;i<=n;++i)
{
int x=read(),m=x%mod,v=0;
for (nod p=h[m];p;p=p->next)
if (p->x==x)
{
v=p->y;break;
}
if (!v)
{
nod p=new node;
p->x=x;p->y=(v=(++b));p->next=h[m];h[m]=p;
}
S[i]=v;
}
fo<<(secv(u)-secv(p-1))<<"\n";
}