Pagini recente » Cod sursa (job #3244973) | Cod sursa (job #1507780) | Atasamentele paginii Secventa 5 | Cod sursa (job #2398531) | Cod sursa (job #3356515)
#include <bits/stdc++.h>
using namespace std;
ifstream f("secv5.in");
ofstream g("secv5.out");
int n,l,u,cnt=1;
vector<long long> arr;
vector<int> arr_norm;
unordered_map<long long,int> id;
long long cauta_secventa(int x) {
vector<int> frecv(cnt+1, 0);
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_norm[i]]) dist_cnt++;
frecv[arr_norm[i]]++;
while (dist_cnt>=x && st<=i) {
final_ans+=(n-i);
frecv[arr_norm[st]]--;
if (frecv[arr_norm[st]]==0) dist_cnt--;
st++;
}
}
return final_ans;
}
int main() {
f>>n>>l>>u;
arr.resize(n);
arr_norm.resize(n);
for(int i=0;i<n;i++) {
f>>arr[i];
if (id[arr[i]]==0) id[arr[i]]=cnt++;
arr_norm[i]=id[arr[i]];
}
g<<cauta_secventa(l)-cauta_secventa(u+1);
}