Cod sursa(job #305961)

Utilizator ConsstantinTabacu Raul Consstantin Data 18 aprilie 2009 23:42:57
Problema Divk Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.58 kb
#include<stdio.h>

unsigned long long int v[500010],i,j,k,l,m,a,b,n,p,q,r[100010],sol;
int main(){

	
	freopen("divk.in","r",stdin);
	freopen("divk.out","w",stdout);
	
scanf("%lld %lld %lld %lld",&n,&k,&a,&b);

for(i=1;i<=a&&i<=n;i++)
	{scanf("%lld",&v[i]);
	v[i]=(v[i]+v[i-1])%k;
	}
p=1;
for(i=a+1;i<=b&&i<=n;i++)
	{scanf("%lld",&v[i]);
	v[i]=(v[i]+v[i-1])%k;
	if(!v[i])sol++;
	r[v[p++]]++;
	sol+=r[v[i]];
	}
q=1;
for(i=b+1;i<=n;i++)
	{scanf("%lld",&v[i]);
	v[i]=(v[i]+v[i-1])%k;
	r[v[p++]]++;
	r[v[q++]]--;
	sol+=r[v[i]];}
	
printf("%lld",sol);
return 0;}