WA了第2、6、18、20点
是因为什么问题 求大佬解答
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
struct node{
long long a,b,c,k;
}t1;
vector<node> qz1;
bool flag;
void build()
{
for(int wz=0;;wz++)
{
if(qz1[wz].b-qz1[wz].a==qz1[wz].c-qz1[wz].b)
{
return;
}
node t;
if(qz1[wz].b-qz1[wz].a>qz1[wz].c-qz1[wz].b)
{
long long d1=qz1[wz].b-qz1[wz].a,d2=qz1[wz].c-qz1[wz].b;
t.k=(d1-1)/d2;
t.a=qz1[wz].a;
t.b=qz1[wz].b-t.k*d2;
t.c=qz1[wz].c-t.k*d2;
t.k+=qz1[wz].k;
}
else
{
long long d1=qz1[wz].b-qz1[wz].a,d2=qz1[wz].c-qz1[wz].b;
t.k=(d2-1)/d1;
t.a=qz1[wz].a+t.k*d1;
t.b=qz1[wz].b+t.k*d1;
t.c=qz1[wz].c;
t.k+=qz1[wz].k;
}
if(t1.a==t.a&&t1.b==t.b&&t1.c==t.c)
{
flag=1;
printf("YES\n%lld",t.k);
return;
}
qz1.push_back(t);
}
return;
}
bool chick(node x,node y,long long d3)
{
if(x.b-x.a>x.c-x.b)
{
long long d2=x.c-x.b;
x.b-=d3*d2;
x.c-=d3*d2;
}
else
{
long long d1=x.b-x.a;
x.a+=d3*d1;
x.b+=d3*d1;
}
if(y.b-y.a>y.c-y.b)
{
long long d2=y.c-y.b;
y.b-=d3*d2;
y.c-=d3*d2;
}
else
{
long long d1=y.b-y.a;
y.a+=d3*d1;
y.b+=d3*d1;
}
if(x.a==y.a&&x.b==y.b&&x.c==y.c)
{
return 1;
}
return 0;
}
long long er(node x,node y,long long r)
{
long long l=1;
while(l<r)
{
long long mid=(l+r)/2;
if(chick(x,y,mid))
{
r=mid;
}
else
{
l=mid+1;
}
}
return l;
}
long long step(node x,node y)
{
if(x.k<y.k)
{
swap(x,y);
}
long long d3=x.k-y.k;
if(x.b-x.a>x.c-x.b)
{
long long d2=x.c-x.b;
x.b-=d3*d2;
x.c-=d3*d2;
}
else
{
long long d2=x.b-x.a;
x.b+=d3*d2;
x.a+=d3*d2;
}
if(x.a==y.a&&x.b==y.b&&x.c==y.c)
{
return d3;
}
return er(x,y,y.k)+d3;
}
void buil()
{
while(1)
{
if(t1.b-t1.a==t1.c-t1.b)
{
return;
}
node t=t1;
if(t1.b-t1.a>t1.c-t1.b)
{
long long d1=t1.b-t1.a,d2=t1.c-t1.b;
long long d3=(d1-1)/d2;
t1.b=t1.b-d3*d2;
t1.c=t1.c-d3*d2;
t1.k+=d3;
}
else
{
long long d1=t1.b-t1.a,d2=t1.c-t1.b;
long long d3=(d2-1)/d1;
t1.a=t1.a+d3*d1;
t1.b=t1.b+d3*d1;
t1.k+=d3;
}
for(int i=0;i<qz1.size();i++)
{
if(qz1[i].a==t1.a&&qz1[i].b==t1.b&&qz1[i].c==t1.c)
{
flag=1;
long long t1k=t.k,tk;
node qz;
if(i==0)
{
tk=0;
qz=qz1[0];
}
else
{
qz=qz1[i-1];
qz.k=qz1[i].k-qz1[i-1].k;
tk=qz1[i-1].k;
}
t.k=t1.k-t.k;
printf("YES\n%lld",tk+t1k+step(qz,t));
return;
}
}
}
return;
}
int main()
{
qz1.resize(1);
scanf("%lld%lld%lld%lld%lld%lld",&qz1[0].a,&qz1[0].b,&qz1[0].c,&t1.a,&t1.b,&t1.c);
if(qz1[0].a>qz1[0].c)
{
swap(qz1[0].a,qz1[0].c);
}
if(qz1[0].a>qz1[0].b)
{
swap(qz1[0].a,qz1[0].b);
}
if(qz1[0].c<qz1[0].b)
{
swap(qz1[0].c,qz1[0].b);
}
if(t1.a>t1.c)
{
swap(t1.a,t1.c);
}
if(t1.a>t1.b)
{
swap(t1.a,t1.b);
}
if(t1.c<t1.b)
{
swap(t1.c,t1.b);
}
if(qz1[0].a==t1.a&&qz1[0].b==t1.b&&qz1[0].c==t1.c)
{
printf("YES\n0");
return 0;
}
build();
if(flag)
{
return 0;
}
buil();
if(!flag)
{
printf("NO");
return 0;
}
return 0;
}