Pagini recente » Cod sursa (job #758832) | Cod sursa (job #3195004) | Cod sursa (job #3268972) | Cod sursa (job #506880) | Cod sursa (job #2884372)
#include <iostream>
#include <bits/stdc++.h>
#include <fstream>
#include <map>
using namespace std;
ifstream in("secv5.in");
ofstream out("secv5.out");
const long long mod = 666013;
map<long long, vector<long long>> m1;
map<long long, vector<long long>> m2;
vector<long long> v1;
int main() {
long long l, u, n;
long long x;
in >> n ;
in>> l >> u;
for (long long i = 0; i < n; i++) {
in>>x;
v1.push_back(x);
}
long long s=0, cntU=0, cntL=0;
for (long long i=0; i<n; i++) {
int ok = 0 ;
for(auto element : m1){
if(element.first == v1[i]%mod)
ok=1;
}
if(ok==0)
m1.insert(pair<long long, vector<long long>>(v1[i]%mod,{v1[i]}));
else
m1[v1[i]%mod].push_back(v1[i]);
while(m1.size()>u)
m1.erase(v1[s++]%mod);
cntU += (i-s+1);
}
s = 0;
for (long long i=0; i<n; i++) {
int ok = 0 ;
for(auto element : m2){
if(element.first == v1[i]%mod)
ok=1;
}
if(ok==0)
m2.insert(pair<long long,vector<long long>>(v1[i]%mod,{v1[i]}));
else
m2[v1[i]%mod].push_back(v1[i]);
if(m2.size()>=l) {
int auxs = m2[v1[s]%mod].size();
m2.erase(v1[s]%mod);
s += auxs;
}
cntL += (i-s+1);
}
cout<<cntU<<" "<<cntL<<endl;
cout<< cntU - cntL;
return 0;
}