diff options
Diffstat (limited to 'codechef/mgame.c')
-rw-r--r-- | codechef/mgame.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/codechef/mgame.c b/codechef/mgame.c new file mode 100644 index 0000000..41ef005 --- /dev/null +++ b/codechef/mgame.c @@ -0,0 +1,23 @@ +#include <stdio.h> +#define sqr(x) ((x) * (x)) + +int main() { + long long t, n, p, diff, u, v; + scanf("%lld", &t); + while(t--) { + scanf("%lld %lld", &n, &p); + if (n < 3) { + printf("%lld\n", p * p * p); + continue; + } + + diff = p - n; + if (diff % 2) { + u = n / 2, v = diff/2; + printf("%lld\n", (u+v*3+2)*(u+v*3+3) + v*(v+1)*3 + 1); + } else { + printf("%lld\n", sqr(p/2 + diff + 1) + sqr(diff)*3/4); + } + } + return 0; +} |