- 对称性,所以指定y永远最大,然后k大于k肯定走不完。
- 图像思路,一定要在空间中想。
- 最后默认最多斜线就是k,然后按照情况分类情况,减掉直线就可以。
#include <bits/stdc++.h>
using namespace std;
int main() {
int T;
long long x, y, k, t, ans;
scanf("%d", &T);
while(T--) {
scanf("%lld%lld%lld",&x,&y,&k);
if(x > y) { // 要到达目的地花费的最小步数是x和y的最大值,如果k小于这个值就一定到不了
t = x;
x = y;
y = t;
}//由于是对称得,一摸一样的。
if(y > k) { //要到达目的地花费的最小步数是x和y的最大值,如果k小于这个值就一定到不了
puts("-1");
continue;
}
ans = k;//0条直线(y-x)是偶数且(k-x)是偶数
if((y - x) % 2) ans--; // (y-x)是奇数,有一条直线
else if((k - x) % 2) ans -= 2;// 2 条直线(y-x)是偶数且(k-x)是奇数。
printf("%lld\n", ans);
}
return 0;
}