Pagini recente » Cod sursa (job #2437310) | Cod sursa (job #2856822) | Cod sursa (job #2224243) | Cod sursa (job #734613) | Cod sursa (job #2423335)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin ("telefon.in");
ofstream fout ("telefon.out");
int n, v[100005], s[100005], b, i, A, B, d, r, k, poz, in, val1, minn1, minn2, val2, nef;
int schema2003(int r)
{
int st=1, dr=n-1, mij, ra=0;
while(st<=dr)
{
mij=(st+dr)/2;
if(v[mij]<=r)
{
ra=mij;
st=mij+1;
}
else dr=mij-1;
}
return ra;
}
int main()
{
fin >> n >> b;
fin >> A;
for(i=1;i<n;i++)
{
fin >> B;
v[i]=B-A;
A=B;
}
minn1=minn2=A;
sort(v+1, v+n);
for(i=1;i<=n;i++)
s[i]=s[i-1]+v[i];
for(d=1;d*d<=b;d++)
if(b%d==0)
{
k=d;
r=b/d;
poz=schema2003(r);
in=max(poz-k, 0);
val1=s[n]-s[poz]+s[in];
nef=k-poz+in;
val2=val1;
if(poz==n-1&&nef==0)
val2=val1+1;
else if(poz!=n-1)
{
if(nef==1)
val2=val1-r;
if(nef>=2)
{
if(2*r<v[poz+1])
val2=val1-r;
else
val2=val1-2*r;
}
else if(nef==0)
val2=val1+v[in+1]-r;
}
minn1=min(minn1, val1);
minn2=min(minn2, val2);
}
fout << minn1 << ' ' << minn2;
return 0;
}