Cod sursa(job #1235878)

Utilizator jeanFMI - Petcu Ion Cristian jean Data 30 septembrie 2014 20:35:18
Problema Divk Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include<stdio.h>
#include<vector>
#define Nmax 100010
using namespace std;
int x,i,n,k,a,b,val,dif,r,N,j;
long long sol;
 
vector<int> V[Nmax];
 
int main()
{
    freopen("divk.in","r",stdin);
    freopen("divk.out","w",stdout);
 
    scanf("%d %d %d %d",&n,&k,&a,&b);
 
    V[0].push_back(0);
     
    for( i = 1 ; i <= n ; ++i )
    { 
        scanf("%d",&x);
        r = (r+x) % k; 
        V[r].push_back(i);
         
        N=V[r].size();
         
        for( j = N-2 ; j >= 0 ; --j )
        {
            dif = i - V[r][j] ; 
            
            if( dif >= a && dif <= b ) ++sol ;
             
            else if( dif > b )  break;
        }
    }
 
    printf("%lld", sol);
 
    return 0;
}