/* -*- coding: utf-8 -*- * * 966.cc: No.966 引き算をして門松列(その1) - yukicoder */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; /* constant */ const int INF = 1 << 30; /* typedef */ /* global variables */ /* subroutines */ int check(int p, int q, int r) { int s = 0; int d0 = q - r + 1; if (d0 > 0) q -= d0, s += d0; int d1 = p - q + 1; if (d1 > 0) p -= d1, s += d1; return (p < 1) ? INF : s; } inline void setmin(int &a, int b) { if (a > b) a = b; } /* main */ int main() { int t; scanf("%d", &t); while (t--) { int a, b, c; scanf("%d%d%d", &a, &b, &c); int mind = INF; setmin(mind, check(a, c, b)); setmin(mind, check(c, a, b)); setmin(mind, check(b, a, c)); setmin(mind, check(b, c, a)); printf("%d\n", (mind >= INF) ? -1 : mind); } return 0; }