Cod sursa(job #1456002)

Utilizator MaligMamaliga cu smantana Malig Data 29 iunie 2015 17:24:58
Problema Divk Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include<iostream>
#include<fstream>
#include<cmath>
#include<algorithm>
#include<vector>
#include<bitset>
#include<cstring>
#include<queue>
#include<stdio.h>

#define ull unsigned long long
#define ll long long
#define FOR(a,b,c) for (int a=b;a<=c; ++a)
#define ROF(a,b,c) for (int a=b;a>=c; --a)
#define mod 100005

using namespace std;
FILE *f;
FILE *g;
ll N,K,A,B,rez;
ll v[500010];
ll sum[500010];

int main()
{
    f=fopen("divk.in","r");
    g=fopen("divk.out","w");
    fscanf(f,"%i %i %i %i",&N,&K,&A,&B);
    FOR (i,1,N) {
        fscanf(f,"%i",&v[i]);
        sum[i]=v[i]+sum[i-1];
    }
    int da=N-A+1;
    FOR (i,1,da) {
        int st=i+A-1;
        int fn=min(i+B-1,N);
        FOR (j,st,fn) {
            //cout<<i<<' '<<j<<' '<<sum[j]-sum[i-1]<<'\n';
            if ( (sum[j]-sum[i-1])%K==0 )
                ++rez;
        }
    }
    fprintf(g,"%i",rez);
    fclose(f);fclose(g);
    return 0;
}