Cod sursa(job #2464575)

Utilizator AlexNicuNicu Alexandru AlexNicu Data 28 septembrie 2019 16:39:36
Problema Divk Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <fstream>
#include <algorithm>

using namespace std;

long long v[500001], sp[500001];

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

int main() {
    int n, k, a, b, i, p1, p2, cnt;
    cin >> n >> k >> a >> b;
    for ( i = 0; i < n; i++ ) {
        cin >> v[i];
    }
    sp[0] = v[0];
    for ( i = 1; i < n; i++ ) {
        sp[i] = ( sp[i - 1] + v[i] ) % k;
    }
    p1 = 0;
    p2 = a - 1;
    cnt = 0;
    sp[0] = 0;
    while ( p2 < n ) {
        while ( p2 < n && p2 - p1 + 1 <= b ) {
            if ( sp[p2] == sp[p1] )
                cnt++;
            p2++;
        }
        if ( p2 < n )
            p2--;
        p1++;
        while ( p2 < n && p2 - p1 + 1 >= a ) {
            if ( sp[p2] == sp[p1] )
                cnt++;
            p1++;
        }
        p1--;
    }
    cout << cnt;
    return 0;
}