Pagini recente » Cod sursa (job #1390248) | Cod sursa (job #2521537) | Cod sursa (job #1991295) | Cod sursa (job #2056362) | Cod sursa (job #2467504)
#include <fstream>
#include <map>
using namespace std;
ifstream fin("secv5.in");
ofstream fout("secv5.out");
map<long long, long long> fr;
long long v[(1 << 20) + 100], n, l, u;
long long getNrSec(long long nrD)
{
fr.clear();
long long p1 = 1, p2 = 1, cnt = 0;
bool ok = 1, enter = 0;
long long rez = 0;
while(p2 <= n)
{
if((fr.find(v[p2]) == fr.end() || fr[v[p2]] == 0) && ok)
{
cnt++;
enter = 1;
fr[v[p2]] = 1;
}
if(!enter)
fr[v[p2]]++;
if(cnt <= nrD)
{
ok = 1;
rez += (p2 - p1 + 1);
++p2;
enter = 0;
}
else
{
fr[v[p1]]--;
if(fr[v[p1]] == 0)
--cnt;
++p1;
ok = 0;
enter = 1;
}
}
return rez;
}
int main()
{
fin >> n >> l >> u;
for(long long i = 1; i <= n; ++i)
fin >> v[i];
if(l == 1)
fout << getNrSec(u) << '\n';
else fout << (getNrSec(u) - getNrSec(l - 1)) << '\n';
return 0;
}