Cod sursa(job #1141838)

Utilizator Kira96Denis Mita Kira96 Data 13 martie 2014 10:47:10
Problema Divk Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include<fstream>
#define N 500100
#define K 100100
using namespace std;
ifstream f("divk.in");
ofstream g("divk.out");
int nr[K],v[N],i,n,mo,k,a,b,j;
long long S[N],sol;
int main ()
{
    f>>n>>k>>a>>b;
    for(i=1;i<=n;++i)
    f>>v[i];
    j=0;
    nr[0]=1;
    for(i=1;i<=n;++i)
    {
        S[i]=S[i-1]+v[i];
        mo=S[i]%k;
        if(i-j>b)
        {
            nr[S[j]%k]--;
            j++;
        }
        sol+=nr[mo];
        nr[S[i]%k]++;
    }
    for(i=0;i<k;++i)
    nr[i]=0;
    nr[0]=1;
    a--;
    j=0;
    for(i=1;i<=n;++i)
    {
        mo=S[i]%k;
        if(i-j>a)
        {
            nr[S[j]%k]--;
            j++;
        }
        sol-=nr[mo];
        nr[S[i]%k]++;
    }
    g<<sol;
}