Pagini recente » Clasament | Cod sursa (job #33424) | Cod sursa (job #2674743) | Cod sursa (job #419708) | Cod sursa (job #423975)
Cod sursa(job #423975)
#include<fstream>
#include<vector>
using namespace std;
ifstream f1 ("divk.in");
ofstream f2 ("divk.out");
int v[600010];
long long s[600010];
vector<int> l[100001];
int nr1,nr2,nr3,nr4;
int main()
{
int n,k,a,b,i,j,p1,p2,k1,k2;
f1>>n>>k>>a>>b;
for (i=1; i<=n; i++) {f1>>v[i]; s[i]=s[i-1]+v[i];}
for (i=0; i<=n; i++) l[s[i]%k].push_back(i);
for (i=0; i<k; i++)
{
if (l[i].size()>1)
{
p1=l[i][0];
k1=0;
for (j=1; j<l[i].size(); j++)
{
p2=l[i][j];
k2=j;
while (p2-p1>b && k1<j) p1=l[i][++k1];
nr1+=k2-k1;
}
}
}
for (i=0; i<k; i++)
{
if (l[i].size()>1)
{
p1=l[i][0];
k1=0;
for (j=1; j<l[i].size(); j++)
{
p2=l[i][j];
k2=j;
while (p2-p1>a-1 && k1<j) p1=l[i][++k1];
nr2+=k2-k1;
}
}
}
f2<<nr1-nr2;
return 0;
}