Pagini recente » Cod sursa (job #1387825) | Cod sursa (job #2543579) | Cod sursa (job #2537396) | Cod sursa (job #82498) | Cod sursa (job #644637)
Cod sursa(job #644637)
#include<fstream>
#include<vector>
using namespace std;
ifstream in("secv5.in");
ofstream out("secv5.out");
unsigned int n,l,u,x[1000010],nr,nrdif;
vector<unsigned int> v[666015];
inline unsigned int h(unsigned int q) {
return q%666014;
}
inline void add(unsigned int nr) {
if(v[h(nr)].empty())
++nrdif;
v[h(nr)].push_back(nr);
}
inline void del(unsigned int nr) {
int i;
for(i=0 ; i<v[h(nr)].size();++i)
if(v[h(nr)][i]==nr)
v[h(nr)].erase(v[h(nr)].begin() + i);
if(v[h(nr)].empty())
--nrdif;
}
int main() {
unsigned int i,j;
in >> n >> l >> u;
for(i=1;i<=n;++i)
in >> x[i];
add(x[1]);
j=1;
for(i=1;i<=n-l+1;++i) {
while(nrdif>=l && j>=i) {
del(x[j]);
--j;
}
++j;
while(nrdif<=u && j<=n) {
add(x[j]);
++j;
if(nrdif>=l)
++nr;
}
--j;
del(x[i]);
}
out << nr << "\n";
return 0;
}