Cod sursa(job #1540062)

Utilizator eu3neuomManghiuc Teodor-Florin eu3neuom Data 2 decembrie 2015 00:21:32
Problema Divk Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include <bits/stdc++.h>

using namespace std;

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

const int NMax = 5e5 + 5;
const int MMax = 1e5 + 5;

int n, k;
int v[NMax], Count[MMax];
long long int Sum[NMax];

inline long long int Solve(const int &x){
    memset(Count, 0, sizeof(Count));
    Count[0] = 1;
    long long int sol = 0;
    for(int i = x, j = 1; i <= n; i++, j++){
        sol += Count[Sum[i] % k];
        Count[Sum[j] % k]++;
    }
    return sol;
}

int main(){
    int a, b;
    fin >> n >> k >> a >> b;
    for(int i = 1; i <= n; i++){
        fin >> v[i];
        Sum[i] = Sum[i - 1] + v[i];
    }
    fout << Solve(a) - Solve(b + 1);
    return 0;
}