Pagini recente » Cod sursa (job #2198256) | Cod sursa (job #2744278) | Cod sursa (job #882278) | Cod sursa (job #1381802) | Cod sursa (job #466360)
Cod sursa(job #466360)
#include<cstdio>
using namespace std;
long long a[100];
int c_st=0,c_dr=0;
int mini (int x,int y)
{
if (x<y) return x;
return y;
}
int maxi (int x,int y)
{
if (x>y) return x;
return y;
}
void capete (long long x,long long y)
{
int st,dr,m;
st=1; dr=74;
while (st<=dr)
{
if (m==(st+dr+1)/2) break;
m=(st+dr+1)/2;
if (a[m]==x) { c_st=m; st=dr+1; }
else if (a[m]>x) dr=m;
else st=m+1;
}
if (!c_st) c_st=st;
st=1; dr=74;
while (st<=dr)
{
if (m==(st+dr+1)/2) break;
m=(st+dr+1)/2;
if (a[m]==y) { c_dr=m; st=dr+1; }
else if (a[m]>y) dr=m-1;
else st=m;
}
if (!c_dr) c_dr=st;
}
int main ()
{
int i,z,n,sum;
long long sum1,sum2,maxim,minim,x1,x2,y1,y2,mij,nr_max,nr,min_1,min_2,max_1,max_2;
freopen("fibo3.in","r",stdin);
freopen("fibo3.out","w",stdout);
a[1]=1; a[2]=1;
for (i=3; i<=74; i++)
a[i]=a[i-1]+a[i-2];
scanf("%d",&n);
for (z=1; z<=n; z++)
{
scanf("%I64d%I64d",&x1,&y1);
scanf("%I64d%I64d",&x2,&y2);
min_1=mini(x1,y1);
max_1=maxi(x1,y1);
min_2=mini(x2,y2);
max_2=maxi(x2,y2);
minim=min_1+min_2;
if (x1+y1<minim) minim=x1+y1;
if (x2+y2<minim) minim=x2+y2;
maxim=max_1+max_2;
if (x1+y1>maxim) maxim=x1+y1;
if (x2+y2>maxim) maxim=x2+y2;
mij=(minim+maxim)/2;
nr_max=(maxim-minim+2)/2;
capete(minim,maxim);
if (c_st==1) c_st++;
sum=0;
for (i=c_st; i<=c_dr; i++)
{
nr=a[i];
if (nr<=mij)
sum+=nr_max-(mij-nr);
else
{
if ((minim+maxim)%2==1) mij++;
sum+=nr_max-(nr-mij);
}
}
printf("%d\n",sum);
}
return 0;
}