Cod sursa(job #1713468)

Utilizator GabiTulbaGabi Tulba-Lecu GabiTulba Data 5 iunie 2016 17:23:19
Problema Divk Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <cstdio>
#include <algorithm>
#define MAX 4000000
#define INF 200000005
using namespace std;
  
char f[MAX];
int pos=0,N,K,A,B,v[500005],set[100005];
long long S=0;
void r(int &nr)
{
    nr=0;
    while(f[pos]<'0'||f[pos]>'9')
        pos++;
    while(f[pos]>='0'&&f[pos]<='9')
        nr=nr*10+f[pos++]-'0';
}
 
int main()
{
    freopen("divk.in","r",stdin);
    freopen("divk.out","w",stdout);
  
    fread(f,1,MAX,stdin);
	r(N);r(K);r(A);r(B);
	for(int i=1;i<=N;i++)
	{
		r(v[i]);
		v[i]+=v[i-1];
		v[i]%=K;
	}
	for(int i=A;i<B;i++)
	{
		set[v[i-A]]++;
		S+=set[v[i]];
	}
	for(int i=B;i<=N;i++)
	{
		set[v[i-A]]++;
		S+=set[v[i]];
		set[v[i-B]]--;
	}
	printf("%lld\n",S);
    return 0;
}