Cod sursa(job #1396608)

Utilizator mirupetPetcan Miruna mirupet Data 22 martie 2015 19:13:21
Problema Divk Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#include<cstdio>
#include<vector>
using namespace std;
int n,k,A,B,i,j,l,x,nr;
int rest[500003],sum[500003];
unsigned long long nre;
int main()
    {
        freopen("divk.in","r",stdin);
        freopen("divk.out","w",stdout);
        scanf("%d%d%d%d",&n,&k,&A,&B);
        for(i=1;i<=n;i++)
            {
                scanf("%d",&sum[i]);
                sum[i]+=sum[i-1];
                sum[i]%=k;
                if(A<=i && i<=B)  ++rest[sum[i]];
            }
        for(i=0;i<=n-A;i++)
        {
            nr=sum[i];
            nre+=rest[nr];
            --rest[sum[i+A]];
            if(i+B+1<=n) ++rest[sum[i+B+1]];
        }

        printf("%llu\n",nre);
    }