Cod sursa(job #1307842)

Utilizator laurageorgescuLaura Georgescu laurageorgescu Data 2 ianuarie 2015 22:00:55
Problema Divk Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.65 kb
#include<fstream>

using namespace std;

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

const int nmax = 500000;
const int kmax = 100000;
int s[ nmax + 1 ], f[ kmax ];

int main() {
    int n, a, b, k, x;
    long long sol;
    fin >> n >> k >> a >> b;
    for( int i = 1; i <= n; ++ i ) {
        fin >> x;
        s[ i ] = ( s[i - 1] + x ) % k;

    }
    sol = 0;
    for( int i = 1; i <= n; ++ i ) {
        if ( i - a >= 0 ) {
            ++ f[ s[ i - a ] ];
        }
        if ( i - b > 0 ) {
            -- f[ s[ i - b - 1 ] ];
        }
        sol += f[ s[ i ] ];
    }
    fout << sol << "\n";
    fin.close();
    fout.close();
    return 0;
}