Cod sursa(job #1383833)

Utilizator felixiPuscasu Felix felixi Data 10 martie 2015 18:11:29
Problema Divk Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.6 kb
#include<fstream>

using namespace std;

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

const int NMAX = 500000;

typedef long long I64;

int s[NMAX+2], f[NMAX+2];
int N, K, A, B;
I64 Ans = 0;

int main() {
    in >> N >> K >> A >> B;
    for( int i = 1;  i <= N;  ++i ) {
        in >> s[i];
        s[i] = (s[i] + s[i-1]) % K;
        if( A <= i && i <= B )  ++f[ s[i] ];
    }
    for( int i = 0;  i <= N-A;  ++i ) {
        int q = s[i];
        Ans += f[q];
        -- f[ s[i+A] ];
        if( i+B+1 <= N )  ++ f[ s[i+B+1] ];
    }
    out << Ans << '\n';
    return 0;
}