Cod sursa(job #3146574)

Utilizator catalinmarincatalinmarin catalinmarin Data 21 august 2023 18:48:38
Problema Divk Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <fstream>
using namespace std;
ifstream cin("divk.in");
ofstream cout("divk.out");
int v[500001];
int sp[500001];
int n, k, a, b;
void two_pointers(int &max_answer, int max_length){
    int pointer_left = 1;
    int pointer_right = 1;
    while (pointer_left <= n){
        int answer = sp[pointer_right] - sp[pointer_left - 1];
        if (answer % k == 0){
            max_answer += 1;
        }
        if (pointer_right - pointer_left < max_length && pointer_right <= n){
            pointer_right++;
        } else {
            pointer_left += 1;
            pointer_right = pointer_left;
        }
    }
}
int main(){
    int raspuns_maxim_b = 0;
    int raspuns_maxim_a = 0;
    cin >> n >> k >> a >> b;
    for (int i = 1; i <= n; i++){
        cin >> v[i];
        sp[i] = (sp[i - 1] + v[i]) % k;
    }
    two_pointers(raspuns_maxim_b, b);
    two_pointers(raspuns_maxim_a, a - 1);
    cout << raspuns_maxim_b - raspuns_maxim_a + 1;
}