Cod sursa(job #912616)

Utilizator apopeid13Apopeid Alejandro apopeid13 Data 12 martie 2013 16:51:43
Problema Divk Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <fstream>
 
using namespace std;
 
#define Nmax 500002
 
int N, K, A, B, x;
long long NR;
int sume[Nmax], sol[Nmax];
 
void citire(){
 
    ifstream f("divk.in");
 
    f >> N >> K >> A >> B;
 
    for(int i = 1; i <= N; i++){
 
        f >> x;
 
        sume[i] = ( sume[i-1] + x ) % K;
    }
 
    f.close();
}
 
void rezolva(){
 
    for(int i = 1; i <= N; i++){
 
        if( i - A >= 0 )
            ++sol[ sume[i - A] ];
 
        if( i - B > 0 )
            --sol[ sume[i - B - 1] ];
 
        NR +=  sol[ sume[i] ];
    }
}
 
void afis(){
 
    ofstream g("divk.out");
 
    g << NR << "\n";
 
    g.close();
}
 
int main(){
 
    citire();
    rezolva();
    afis();
 
    return 0;
}