Pagini recente » Cod sursa (job #867266) | Cod sursa (job #2748306) | Cod sursa (job #710649) | Cod sursa (job #1110683) | Cod sursa (job #1113513)
#include <fstream>
using namespace std;
int x[100010],y[100010],kap[100010];
int main()
{
ifstream f("calcule.in");
ofstream g("calcule.out");
int n,k,i,j,ok,nr;
f>>n>>k;
for(i=1; i<=n; ++i)
f>>x[i];
int m,st,dr;
nr=0;
for(i=1; i<=n; ++i)
{
st=1;
dr=nr;
ok=0;
m=(st+dr)/2;
while(st<=dr&&ok==0)
{
m=(st+dr)/2;
if(x[i]>y[m])
{
if(x[i]<=y[m-1]||m<2)
{
ok=1;
y[m]=x[i];
}
else
{
dr=m-1;
}
}
else
{
st=m+1;
}
}
if(ok==0)
{
++nr;
y[nr]=x[i];
}
}
g<<nr<<'\n';
y[0]=0;
for(i=1; i<=n; ++i)
{
y[i]=y[i-1]+x[i];
y[i]%=k;
kap[y[i]]++;
}
nr=0;
for(i=0; i<k; ++i)
{
if(kap[i]>1)
{
nr+=((kap[i]))*((kap[i]-1))/2;
nr%=20011;
}
if(kap[i]==2)
{
nr+=1;
nr%=20011;
}
if(i==0)
nr+=kap[i];
nr%=20011;
}
g<<nr;
return 0;
}