about summary refs log tree commit diff
path: root/codechef/mgame.c
diff options
context:
space:
mode:
Diffstat (limited to 'codechef/mgame.c')
-rw-r--r--codechef/mgame.c23
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;
+}