Cod sursa(job #330)

Utilizator Binary_FireFlorin Pogocsan Binary_Fire Data 10 decembrie 2006 19:52:56
Problema Divk Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.6 kb
#include<stdio.h>
#define Fin "divk.in"
#define Fout "divk.out"
#define NMAX 500001
long n,k,a,b;
long s[NMAX],r[NMAX];
long long sol,aux; 

int main()
{long i,j;
 FILE *in,*out;
 in=fopen(Fin,"r");
 fscanf(in,"%ld %ld %ld %ld",&n,&k,&a,&b);     
 for (i=1;i<=n;i++) 
   { fscanf(in,"%ld",&s[i]);
     s[i]=(s[i-1]+s[i])%k; 
     if (s[i]==0 && i>=a && i<=b) sol++; }
 fclose(in);
 out=fopen(Fout,"w");  
 for (i=a;i<=n;i++)
  { if (i>b+1) r[(s[i-b-1])]--;
    if (i>a) r[(s[i-a])]++;
    aux=r[s[i]];
    sol+=(long long)aux; } 
 fprintf(out,"%lld\n",sol);
 fclose(out);  
 return 0;}