Cod sursa(job #803551)

Utilizator Detrol2kGuianu Leon Detrol2k Data 27 octombrie 2012 19:37:57
Problema Divk Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.59 kb
#include <fstream>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <iostream>
#include <string.h>
using namespace std;

int n, k, a, b;
long long v[500001], c[500001], nr=0, size=0, sum=0, i, j, x;
	
int main()
{
	FILE *f=fopen("divk.in","r");
	FILE *g=fopen("divk.out","w");
	
	//Read
	fscanf(f, "%d %d %d %d", &n, &k, &a, &b), b++;
	for(i=1; i<=n; i++)
	{
		fscanf(f, "%lld", &x);
		v[i] = (x+v[i-1])%k;
	}

	//Compute
	for(i=a;i<=n;i++)
	{
		c[v[i-a]]++;
		if(i>=b)
			c[v[i-b]]--;
		sum = sum+c[v[i]];
	}
	
	//Print
	fprintf(g, "%lld", sum);
}