Cod sursa(job #3137330)
Utilizator | Data | 12 iunie 2023 16:50:24 | |
---|---|---|---|
Problema | Divk | Scor | 0 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva de probleme | Marime | 0.52 kb |
//Ilie Dumitru
#include<cstdio>
const int NMAX=500005;
int v[NMAX];
int cnt[NMAX];
int main()
{
FILE* f=fopen("divk.in", "r"), *g=fopen("divk.out", "w");
//FILE* f=stdin, *g=stdout;
int i, N, a, b, k, sum=0;
long long int ans=0;
fscanf(f, "%d%d%d%d", &N, &k, &a, &b);
for(i=0;i<N;++i)
{
fscanf(f, "%d", v+i);
sum=v[i]=(v[i]+sum)%k;
if(i>=a-1)
++cnt[v[i-a+1]];
ans+=cnt[v[i]];
if(i>=b-1)
--cnt[v[i-b-1]];
}
fprintf(g, "%lld\n", ans);
fclose(f);
fclose(g);
return 0;
}