Pagini recente » Cod sursa (job #2976209) | Borderou de evaluare (job #1372503) | Cod sursa (job #3203165) | Cod sursa (job #675363) | Cod sursa (job #2659965)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("divk.in");
ofstream fout("divk.out");
#define NMAX 500005
int n,k,a,b;
int v[NMAX];
int sum[NMAX];
int first[100005];
int last[100005];
int main()
{
fin>>n>>k>>a>>b;
for(int i=1;i<=n;i++)
{
fin>>v[i];
v[i] = v[i] % k;
}
for(int i=1;i<=n;i++)
{
sum[i] = (sum[i-1] % k + v[i] % k) % k;
}
for(int i=1;i<=n;i++)
{
if(!first[sum[i]])
first[sum[i]] = i;
last[sum[i]] = i;
}
int maxim = 0;
for(int i=0;i<=100000;i++)
{
int lg = last[i] - first[i] + 1;
if(lg >= a && lg <= b && lg > maxim)
maxim = lg;
}
fout<<maxim;
return 0;
}