Cod sursa(job #3137346)
Utilizator | Ilie Dumitru Ilie_Mity | Data | 12 iunie 2023 17:14:03 |
---|---|---|---|
Problema | Divk | Scor | 40 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva de probleme | Marime | 0.55 kb |
//Ilie Dumitru
#include<cstdio>
const int NMAX=500005;
int v[NMAX];
int cnt[NMAX];
/*
5 3 1 2
1 2 3 4 5
*/
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=1;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;
}