Cod sursa(job #987492)

Utilizator Andrei1998Andrei Constantinescu Andrei1998 Data 20 august 2013 20:47:28
Problema Divk Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <fstream>

using namespace std;

int frec[100005];

int main()
{
    ifstream fin("divk.in");
    ofstream fout("divk.out");

    int n=0,k,a=0,b=0,i;
    fin>>n>>k>>a>>b;

    int nr[500005];
    nr[0]=0;

    for(i=1;i<=n;i++)
        fin>>nr[i],nr[i]+=nr[i-1],nr[i]%=k;
    fin.close();

    long long int total=0;
    /*
    //Si asta (*)
    int st=0;
    int dr=-1;

    for(i=0;i<=n;i++)
    {
        //Secventa memorabila! (*)
        while((i-st)>b)
            frec[nr[st++]]--;
        while((i-dr-1)>=a)
            frec[nr[++dr]]++;
        total=total+frec[nr[i]]*1ll;
    }
    */

    for(i=a;i<=n;i++)
    {
        frec[nr[i-a]]++;
        if(i>=(b+1))
            frec[nr[i-b-1]]--;
        total+=(frec[nr[i]]*1ll);
    }
    fout<<total<<'\n';

    fout.close();
    return 0;
}