Pagini recente » Cod sursa (job #1619635) | Cod sursa (job #2295945) | Cod sursa (job #1128450) | Cod sursa (job #264745) | Cod sursa (job #2039844)
#include <iostream>
#include <cstdio>
#define MAXN 100002
using namespace std;
FILE *fin=fopen("calcule.in","r"),*fout=fopen("calcule.out","w");
int n,k,sp,rest[MAXN]={0},finsub[MAXN]={0},nrsub=0;
long long nrdivk;
int bs(int x){
int st=0,dr=nrsub,mij;
while(st<dr){
mij=(st+dr)/2;
if(finsub[mij]>=x)
st=mij+1;
else
dr=mij;
}
return st;
}
int main(){
fscanf(fin,"%d%d",&n,&k);
for(int i=1;i<=n;i++){
int x,poz;
fscanf(fin,"%d",&x);
sp=(sp+x)%k;
rest[sp]=(rest[sp]+1)%20011;
poz=bs(x);
finsub[poz]=x;
if(nrsub==poz) nrsub++;
}
nrdivk=rest[0]*(rest[0]+1)/2%20011;
for(int i=1;i<k;i++){
nrdivk=(nrdivk+rest[i]*(rest[i]-1)/2)%20011;
}
fprintf(fout,"%d\n%d",nrsub,nrdivk);
//cout<<nrdivk;
return 0;
}