Cod sursa(job #1309025)

Utilizator pepsiM4A1Ozturk Arif pepsiM4A1 Data 5 ianuarie 2015 08:40:11
Problema Divk Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.62 kb
#include <stdio.h>
int n,a,b,k;
int sum[500001];
int d[500001];
int main()
{
    FILE *fin,*fout;
    fin=fopen("divk.in","r");
    fout=fopen("divk.out","w");
    fscanf(fin,"%d%d%d%d",&n,&k,&a,&b);
    for(int i=1;i<=n;i++)
    {
        fscanf(fin,"%d",&sum[i]);
        sum[i]+=sum[i-1];
        if(sum[i]>=k) sum[i]%=k;
    }
    int cnt = 0;
    for(int i = 1; i <= n; ++i)
    {
        if(i - a >= 0)
            d[sum[i-a]]++;
 
        if(i - b > 0)
            d[sum[i-b-1]]--;
 
        cnt += d[sum[i]];
    }
    fprintf(fout,"%d\n",cnt);
    fclose(fin);
    fclose(fout);
    return 0;
}