Pagini recente » Cod sursa (job #1070975) | Cod sursa (job #2291351) | Cod sursa (job #714699) | Cod sursa (job #732620) | Cod sursa (job #1053890)
#include <iostream>
#include <fstream>
#define Nmax 500003
using namespace std;
int N,K,A,B;
long long cnt[Nmax],vec[Nmax];
void read_data()
{
ifstream f("divk.in");
f>>N>>K>>A>>B;
for(int i=1;i<=N;++i)
f>>vec[i];
f.close();
}
long long query(int length)
{
for(int i=0;i<K;++i)
cnt[i] = 0;
cnt[0] = 1;
long long sol = 0;
for(int i=1;i<=N;++i)
{
if(cnt[vec[i]] > 0)
sol += cnt[vec[i]];
++cnt[vec[i]];
if(i-length >= 0)
--cnt[vec[i-length]];
}
return sol;
}
int main()
{
read_data();
ofstream g("divk.out");
for(int i=1;i<=N;++i)
vec[i] = (vec[i] + vec[i-1])%K;
g<<query(B) - query(A-1);
g.close();
return 0;
}