Cod sursa(job #743956)

Utilizator blue_phoenixPosea Elena blue_phoenix Data 6 mai 2012 21:18:30
Problema Divk Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#include <fstream>
#include <iostream>
#include <vector>
using namespace std;
#define nmax 500010
#define kmax 100010
int sp[nmax];//sume partiale % k
int sume[kmax];//sume[sp[i]]=nr de indici (de sume partiale) pt care am obtinut restul sp[i] la impartirea cu k, pana acum
int N;

int main(){
   int K,A,B;
   ifstream fin("divk.in");
   ofstream fout("divk.out");
   fin>>N>>K>>A>>B;
   int i;
   int aux;
   for(i=1;i<=N;i++){
     fin>>aux;
     sp[i]=(sp[i-1]+aux)%K;
   }
   long long suma=0;
   for(i=A;i<=N;i++){
       sume[sp[i-A]]++;//garanteaza lungimea >=a
       if(i>B)sume[sp[i-B-1]]--;//garanteaza lungimea<=b; daca e >b scade 1
       suma+=sume[sp[i]];
   }

   fout<<suma<<endl;
return 0;
}