Pagini recente » Cod sursa (job #1368861) | Cod sursa (job #2176930) | Cod sursa (job #1575908) | Cod sursa (job #2856712) | Cod sursa (job #85347)
Cod sursa(job #85347)
#include<stdio.h>
int n, k, a, b, i, p1, j, s, s1, s2, cit, v[100];
int (*de)[100000] = new int [100000][100000];
int gs(int b){
int s1 = 0;
for (i=0; i<k; i++){
p1 = 1;
for (j=2; j<=v[i]; j++)
if (de[i][j]-de[i][p1] > b){
p1 ++;
if (j-p1-1 > 0)
s1 += j-p1-1;
while (de[i][j]-de[i][p1] > b && p1+1 < j){
p1 ++;
s1 += j-1-p1;
}
if (de[i][j]-de[i][p1] <= b && p1 < j)
s1 ++;
}
else
s1 ++;
for (j=p1+1; j<v[i]; j++)
s1 += v[i]-j;
}
return s1;
}
int main()
{
freopen("divk.in","r",stdin);
freopen("divk.out","w",stdout);
scanf("%d%d%d%d", &n, &k, &a, &b);
v[0] = 1;
for (i=1; i<=n; i++){
scanf("%d", &cit);
s += cit;
de[s % k][++v[s % k]] = i;
}
s1 = gs(b);
s2 = gs(a-1);
if (s1 - s2 < 0)
s1 = s2;
printf("%d\n", s1-s2);
fclose(stdin);
fclose(stdout);
return 0;
}