Pagini recente » Cod sursa (job #640303) | Borderou de evaluare (job #2013275) | Borderou de evaluare (job #291216) | Cod sursa (job #2424410) | Cod sursa (job #3233782)
#include <iostream>
#include <vector>
#include <unordered_map>
#include <fstream>
using namespace std;
int countDivisibleSubsequences(const vector<int>& arr, int A, int B, int K) {
int n = arr.size();
int count = 0;
vector<int> prefixSum(n + 1, 0);
for (int i = 0; i < n; ++i) {
prefixSum[i + 1] = prefixSum[i] + arr[i];
}
for (int i = 0; i < n; ++i) {
for (int j = i + A; j <= n && j <= i + B; ++j) {
int sum = prefixSum[j] - prefixSum[i];
if (sum % K == 0) {
++count;
}
}
}
return count;
}
int main() {
ifstream infile("divk.in");
ofstream outfile("divk.out");
int N, K, A, B;
infile >> N >> K >> A >> B;
vector<int> v(N);
for (int i = 0; i < N; ++i) {
infile >> v[i];
}
int result = countDivisibleSubsequences(v, A, B, K);
outfile << result << endl;
infile.close();
outfile.close();
return 0;
}