Pagini recente » Cod sursa (job #2600342) | Cod sursa (job #1855425) | Cod sursa (job #131387) | Cod sursa (job #2621237) | Cod sursa (job #1144111)
#include <cstdio>
#include <vector>
using namespace std;
FILE * is = fopen("divk.in", "r");
FILE * os = fopen("divk.out", "w");
int n, k, lmin, lmax;
int a, s;
long long answ;
vector<int> r[100000];
int main()
{
fscanf(is, "%d%d%d%d", &n, &k, &lmin, &lmax);
for ( int i = 0; i < k; ++i )
r[i].push_back(0);
r[0][0] = 1;
r[0].push_back(0);
for ( int i = 1; i <= n; ++i )
{
fscanf(is, "%d", &a);
s = ( s + a ) % k;
++r[s][0];
r[s].push_back(i);
for ( int j = 1; j <= r[s][0]; ++j )
if ( i - r[s][j] >= lmin && i - r[s][j] <= lmax )
++answ;
}
fprintf(os, "%d", answ);
fclose(is);
fclose(os);
return 0;
}