Pagini recente » Cod sursa (job #13044) | Diferente pentru problema/count intre reviziile 3 si 6 | Cod sursa (job #13041) | Cod sursa (job #3338433) | Cod sursa (job #3356513)
#include <bits/stdc++.h>
using namespace std;
ifstream f("secv5.in");
ofstream g("secv5.out");
int n,l,u,cnt=1;
vector<int> arr;
unordered_map<int,int> id;
long long cauta_secventa(int x) {
unordered_map<int,int> frecv;
int dist_cnt=0;
long long final_ans=0;
int st=0;
for (int i=0;i<n; i++) {
// cout<<final_ans<<" ";
if (!frecv[arr[i]]) dist_cnt++;
frecv[arr[i]]++;
while (dist_cnt>=x && st<=i) {
final_ans+=(n-i);
frecv[arr[st]]--;
if (frecv[arr[st]]==0) dist_cnt--;
st++; i++;
}
}
return final_ans;
}
int main() {
f>>n>>l>>u;
arr.resize(n);
for(int i=0;i<n;i++) {
f>>arr[i];
if (!id[arr[i]]) id[arr[i]]=cnt++;
arr[i]=id[arr[i]];
}
g<<cauta_secventa(l)-cauta_secventa(u+1);
}