Cod sursa(job #1319091)

Utilizator BLz0rDospra Cristian BLz0r Data 16 ianuarie 2015 17:45:51
Problema Divk Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.57 kb
#include <cstdio>
using namespace std;

#define Nmax 500001

FILE *f = fopen("divk.in","r");
FILE *g = fopen("divk.out","w");

int s[Nmax], ap[Nmax];

int main(){
	int N, K, A, B;
	long long sol = 0;
	
  	fscanf(f,"%d%d%d%d",&N,&K,&A,&B);
    
	for(int i = 1; i <= N; ++i){
        fscanf (f,"%d",&s[i]);
        s[i] = (s[i] + s[i-1]) % K;
    }

    for(int i = 1; i <= N; ++i){
        
		if( i - A >= 0 ) ap[s[i-A]]++;
        if( i - B > 0 ) ap[s[i-B-1]]--;
		
        sol += ap[s[i]];
    }
	
    fprintf (g,"%lld\n",sol);

    return 0;
}