Pagini recente » Cod sursa (job #1711007) | Cod sursa (job #3236661) | Cod sursa (job #2403191) | Cod sursa (job #3211651) | Cod sursa (job #1141670)
#include<stdio.h>
#include<vector>
using namespace std;
long long nr,s;
int v,n,k,a,b,i,j;
vector <int> r[100011];
long long sol(int b){
long long nr=0,s=0;int st;
for(int i=0;i<k;i++){
int st=0;
for(int j=0;j<r[i].size();j++){
while(st<=j&&r[i][j]-r[i][st]>b)
{
st++;
}
if(st<=j)
nr+=j-st;
}
}
for(int i=0;i<r[0].size()&&r[0][i]<=b;i++)
nr++;
return nr;
}
int main(){
FILE *f=fopen("divk.in","r");
fscanf(f,"%d %d %d %d",&n,&k,&a,&b);
v=0;
for(i=1;i<=n;i++){
fscanf(f,"%lld",&j);
v=(v+j)%k;
r[v].push_back(i);
}
fclose(f);
nr=sol(b);
long long nr1=sol(a-1);
FILE *g=fopen("divk.out","w");
fprintf(g,"%lld",nr-nr1);
fclose(g);
return 0;
}