Pagini recente » Cod sursa (job #2730944) | Cod sursa (job #2133602) | Cod sursa (job #372936) | Cod sursa (job #2264419) | Cod sursa (job #644635)
Cod sursa(job #644635)
#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;++i) {
while(nrdif>=l) {
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;
}