Cod sursa(job #1552705)

Utilizator PopoviciRobertPopovici Robert PopoviciRobert Data 18 decembrie 2015 14:51:44
Problema Divk Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#include <cstdio>
#define MAXN 500000
#define MAXK 100000
int v[MAXN+1],next[MAXN+1],ind[MAXK+1];
int main(){
    FILE*fi,*fout;
    int n,k,a,b,con,i,nr,poz;
    fi=fopen("divk.in" ,"r");
    fout=fopen("divk.out" ,"w");
    fscanf(fi,"%d%d%d%d" ,&n,&k,&a,&b);
    for(i=1;i<=n;i++){
         fscanf(fi,"%d" ,&nr);
         v[i]=(v[i-1]+nr)%k;
         next[i]=ind[v[i]];
         ind[v[i]]=i;
    }
    con=0;
    for(i=1;i<=n;i++){
        poz=i;
        while(poz>0&&i-poz<=b){
            if(i-poz>=a)
               con++;
            poz=next[poz];
        }
        if(v[i]==0&&i>=a&&i<=b)
           con++;
    }
    fprintf(fout,"%d" ,con);
    fclose(fi);
    fclose(fout);
    return 0;
}