Cod sursa(job #3337258)
| Utilizator | Data | 27 ianuarie 2026 08:28:02 | |
|---|---|---|---|
| Problema | Divk | Scor | 0 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva de probleme | Marime | 0.65 kb |
#include <bits/stdc++.h>
using namespace std;
ifstream fin("divk.in");
ofstream fout("divk.out");
int n, k, A, B;
int a[500005], s[500005], fr[100005];
long long F(int x)
{
int i, j;
long long nrsecv = 0;
s[0] = j = 0;
fr[0] = 1;
for(i = 1; i <= n; i++)
{
s[i] = (s[i - 1] + a[i]) % k;
if(i - j > x)
{
fr[s[j]]--;
j++;
}
nrsecv += fr[s[i]];
fr[s[i]]++;
}
return nrsecv;
}
int main()
{
int i;
fin >> n >> k >> A >> B;
for(i = 1; i <= n; i++) fin >> a[i];
fout << F(B) - F(A - 1) << '\n';
return 0;
}
