Pagini recente » Cod sursa (job #2944184) | Cod sursa (job #846038) | Cod sursa (job #1236522) | Cod sursa (job #1720422) | Cod sursa (job #2881509)
#include <iostream>
#include <fstream>
#include <unordered_map>
#include <vector>
using namespace std;
int n, l, u, element;
long long numar_secvente;
unordered_map<int, int>aparitii;
vector<int> v;
void Citire() {
ifstream f("secv5.in");
f >> n >> l >> u;
for(int i = 0; i < n; i++) {
f >> element;
v.push_back(element);
}
}
void DeterminareNumarSecvente() {
int stanga = 0;
int dreapta = -1;
int numar_distincte = 0;
while(dreapta < (int)v.size()) {
if(numar_distincte < l) {
dreapta++;
element = v[dreapta];
if(aparitii[element] == 0) {
numar_distincte++;
aparitii[element] = 1;
}
else {
aparitii[element]++;
}
continue;
}
if(numar_distincte > u) {
aparitii[v[stanga]]--;
if(aparitii[v[stanga]] == 0)
numar_distincte--;
stanga++;
continue;
}
numar_secvente += v.size() - dreapta;
cout << stanga << ' ' << dreapta << '\n';
aparitii[v[stanga]]--;
if(aparitii[v[stanga]] == 0)
numar_distincte--;
stanga++;
}
}
void Afisare() {
ofstream g("secv5.out");
g << numar_secvente;
}
int main() {
Citire();
DeterminareNumarSecvente();
Afisare();
return 0;
}