Cod sursa(job #974048)
| Utilizator | Data | 16 iulie 2013 13:06:37 | |
|---|---|---|---|
| Problema | Divk | Scor | 20 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.61 kb |
#include<fstream>
#define NMAX 500005
#define KMAX 100005
using namespace std;
ifstream f("divk.in");
ofstream g("divk.out");
int sum[NMAX];
int ap[KMAX];
int N,K,a,b;
unsigned long long Ans;
int main ( void )
{
f>>N>>K>>a>>b;
for( int i(1) ; i <= N ; ++i )
{
int x;
f>>x;
sum[i]=(sum[i-1]+x) % K;
}
for( int i(1) ; i <= N ; ++i )
{
if( i >=a )
++ap[sum[i-a]];
if( i > b)
--ap[sum[i-b+1]];
Ans+=ap[sum[i]];
}
g<<Ans;
f.close();
g.close();
return 0;
}