Cod sursa(job #905792)

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

using namespace std;

int N, A, B, K, NR, x;
long long sume[500010], sol[100010];

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;
}