Pagini recente » Cod sursa (job #2314968) | Cod sursa (job #1185713) | Cod sursa (job #1983372) | Cod sursa (job #340041) | Cod sursa (job #1221143)
# include <fstream>
# include <iostream>
using namespace std;
ifstream fi("secv5.in");
ofstream fo("secv5.out");
const int mod=666013;
typedef struct node
{
int x;
node *next;
} *nod;
nod h[mod];
int S[1<<21];
bool find(int x)
{
int 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(int x,int n)
{
if (!x) return 0;
int k=1,l=1;
long long 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;
int p,u,n;
fi>>n>>p>>u;
for (int i=1;i<=n;++i)
{
int x;
fi>>x;
if (find(x)) S[i]=S[i-1]; else S[i]=i;
}
fo<<(secv(u,n)-secv(p-1,n))<<"\n";
}