Cod sursa(job #1822642)

Utilizator DobosDobos Paul Dobos Data 5 decembrie 2016 11:38:48
Problema Divk Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.19 kb
#include <bits/stdc++.h>
#define NMAX 500005
#define BMAX 500000
using namespace std;

ifstream fin("divk.in");
ofstream fout("divk.out");

int V[NMAX],e = BMAX - 1;

char buffer[BMAX + 1];

void parsare(int &x){
    bool semn  = 0;
    while(!isdigit(buffer[e])){
        if(buffer[e] == '-')
            semn = 1;
        if(++e == BMAX){
            fin.read(buffer,BMAX);
            e = 0;
        }
    }
    x = 0;
    while(isdigit(buffer[e])){
        x = x * 10 + buffer[e] - '0';
        if(++e == BMAX){
            fin.read(buffer,BMAX);
            e = 0;
        }
    }
    if(semn == 1)
        x = -x;
}


int main()
{
    ios :: sync_with_stdio(false);
    fin.tie(NULL);

    int n,a,b,k;
    long long  sol = 0;
   // fin >> n >> k >> a >> b;
    parsare(n); parsare(k); parsare(a); parsare(b);
    for(int i  = 1; i <= n; i++){
        parsare(V[i]);
       // fin >> V[i];
        V[i] += V[i - 1];
    }

    for(int i = a; i <= n; i++){
       for(int j = i - a + 1; j >= i - b  + 1 && j >= 1; j--){
            if((V[i] - V[j - 1]) % k == 0){
                sol ++;
            }
       }
    }

    fout << sol;

    return 0;
}