Cod sursa(job #905788)

Utilizator AlexandruValeanuAlexandru Valeanu AlexandruValeanu Data 6 martie 2013 10:17:05
Problema Divk Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#include <fstream>

using namespace std;

#define Nmax 1000002

int N, A, B, K, NR, x;
int sume[Nmax], sol[Nmax];

void citire(){

    ifstream f("divk.in");

    f >> N >> K >> A >> B;

    for(int i = 1; i <= N; i++){

        f >> x;

        sume[i] = ( sume[i-1] + x ) % K;
    }

    f.close();
}

void rezolva(){

    for(int i = 1; i <= N; i++){

        if ( i - A >= 0 )
            sol[ sume[i - A] ]++;

        if ( i - B > 0 )
            sol[ sume[i - B - 1] ]--;

        NR += sol[sume[i]];
    }
}

void afis(){

    ofstream g("divk.out");

    g << NR << "\n";

    g.close();
}

int main(){

    citire();
    rezolva();
    afis();

    return 0;
}