Pagini recente » Cod sursa (job #2933416) | Cod sursa (job #958933) | Cod sursa (job #1616062) | Cod sursa (job #2148138) | Cod sursa (job #1528412)
# include <fstream>
# include <algorithm>
# define NR 1100000
using namespace std;
ifstream f("secv5.in");
ofstream g("secv5.out");
int i,j,n,m,L,U;
int A[NR], ap[NR];
long long a[NR], cp[NR];
// numarul de secvente cu pana la L elemente diferite
long long numara (int L) {
long long sol=0, Edif=0;
int ci=1; ap[A[1]]=1; Edif=1;
sol=1;
for (int i=2; i<=n; ++i) {
++ap[A[i]]; if (ap[A[i]]==1) ++Edif;
while (Edif>L) {
--ap[A[ci]];
if (ap[A[ci]]==0) --Edif;
++ci;
}
sol+=i-ci+1;
}
//curat
while (ci<=n) {
--ap[A[ci]];
++ci;
}
return sol;
}
int main ()
{
f>>n>>L>>U;
for (i=1; i<=n; ++i)
{ f>>a[i]; cp[i]=a[i];}
sort (cp+1, cp+n+1);
for (i=1; i<=n; ++i)
A[i]=lower_bound(cp+1, cp+n+1, a[i])-cp;
g<<numara(U)-numara(L-1);
return 0;
}