Cod sursa(job #30999)

Utilizator PetruRaresPetru Rares PetruRares Data 15 martie 2007 13:16:51
Problema Divk Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <stdio.h>

struct Nod {
	unsigned int inf;
	Nod * leg;
};
typedef Nod * PNod;
PNod lista,ul;
int addnod(unsigned int x) {
	PNod p;
	p=new Nod;
	p->inf=x;
	p->leg=NULL;
	ul->leg=p;
	ul=p;
	return 1;
}

int main() {
	unsigned int A,B,N,K,v,nr=0,l,poz,nn,suma;
	PNod gg,ggg,start;

	freopen("divk.in","r",stdin);
	scanf("%d %d %d %d",&N,&K,&A,&B);
	lista=new Nod;
	lista->inf=0;
	lista->leg=NULL;
	ul=lista;
	for (int i=0;i<N;i++) { scanf("%d",&v); addnod(v); }
	fclose(stdin);
	start=lista->leg;
	poz=0;
	while((start)&&(poz<=N-A)) {
		suma=0;
		ggg=start; nn=1;
		while ((ggg)&&(nn<=A-1)) {
			suma=suma+ggg->inf; //primele A-1
			nn++;
			ggg=ggg->leg;
		}
		gg=ggg; l=nn-1;
		while ((gg)&&(l<=B)) {
			suma=suma+gg->inf;
			if (suma%K==0) nr++;
			l++;
			gg=gg->leg;
		}
		start=start->leg;
		poz++;
	}

	freopen("divk.out","w",stdout);
	printf("%d",nr);
	fclose(stdout);
	return 0;
}