QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#686545#1958. Grid TrianglexhytomAC ✓126ms3840kbC++142.6kb2024-10-29 14:11:002024-10-29 14:11:01

Judging History

你现在查看的是最新测评结果

  • [2024-10-29 14:11:01]
  • 评测
  • 测评结果:AC
  • 用时:126ms
  • 内存:3840kb
  • [2024-10-29 14:11:00]
  • 提交

answer

#include <bits/stdc++.h>

using namespace std;

using i64 = long long;

int main() {
	std::ios::sync_with_stdio(false);
	std::cin.tie(0);

	std::vector<int> x(4);
	for (int i = 1; i <= 3; i++) {
		std::cin >> x[i];
	}

	std::sort(x.begin() + 1, x.end());

	int a = x[1], b = x[2], c = x[2];

	i64 ans = 0;

	auto check = [&](int x, int y) {
		return -y <= x && x <= y;
	};

	auto checkmi = [&](int lo, int x, int hi) {
		return lo <= x && x <= hi;
	};

	auto getansxminusy = [&](int lo, int x, int hi) {
		ans += hi - lo + 1;

		if (lo <= 0 && 0 <= hi) {
			ans --;
		}

		if (lo <= x && x <= hi) {
			ans --;
		}
		if (lo <= -x && -x <= hi) {
			ans --;
		}

		if (std::abs(x) % 2 == 0) {
			if (lo <= x / 2 && x / 2 <= hi) {
				ans --;
			}
		}

		if (lo <= x * 2 && x * 2 <= hi) {
			ans --;
		}
	};

	auto getansxplusy = [&](int lo, int x, int hi) {
		ans += hi - lo + 1;

		if (lo <= 0 && 0 <= hi) {
			ans --;
		}

		if (lo <= x && x <= hi) {
			ans --;
		}
		if (lo <= -x && -x <= hi) {
			ans --;
		}

		if (std::abs(x) % 2 == 0) {
			if (lo <= -x / 2 && -x / 2 <= hi) {
				ans --;
			}
		}

		if (lo <= -x * 2 && -x * 2 <= hi) {
			ans --;
		}
	};

	for (int i = 1; i <= a; i++) {
		if (i == 0) continue;
		{ // x, y, x + y
			// x + y, -x, y
			if (check(i, b)) {
				int hi = std::min(c, a - i);
				int lo = std::max(-c, -a - i);
				getansxplusy(lo, i, hi);
			}
			// -y, x + y, x
			if (check(i, c)) {
				int hi = std::min(a, b - i);
				int lo = std::max(-a, -b - i);
				getansxplusy(lo, i, hi);
			}
		}
		{ // x, y, - x - y
			// x + y, -x, -y
			if (check(i, b)) {
				int hi = std::min(c, a - i);
				int lo = std::max(-c, -a - i);
				getansxplusy(lo, i, hi);
			}
			// -y, x + y, -x
			if (check(i, c)) {
				int hi = std::min(a, b - i);
				int lo = std::max(-a, -b - i);
				getansxplusy(lo, i, hi);
			}
		}
		{ // x, y, x - y
			// x - y, x, -y
			if (check(i, b)) {
				int hi = std::min(c, a + i);
				int lo = std::max(-c, -a + i);
				getansxminusy(lo, i, hi);
			}
			// y, y - x, x
			if (check(i, c)) {
				int hi = std::min(a, b + i);
				int lo = std::max(-a, -b + i);
				getansxminusy(lo, i, hi);
			}
		}
		{ // x, y, -x + y
			// x - y, x, y
			if (check(i, b)) {
				int hi = std::min(c, a + i);
				int lo = std::max(-c, -a + i);
				getansxminusy(lo, i, hi);
			}
			// y, y - x, -x
			if (check(i, c)) {
				int hi = std::min(a, b + i);
				int lo = std::max(-a, -b + i);
				getansxminusy(lo, i, hi);
			}
		}
	}
	std::cout << ans << '\n';
	return 0;
}

详细

Test #1:

score: 100
Accepted
time: 0ms
memory: 3544kb

input:

1 1 4

output:

0

result:

ok single line: '0'

Test #2:

score: 0
Accepted
time: 0ms
memory: 3488kb

input:

1 1 5

output:

0

result:

ok single line: '0'

Test #3:

score: 0
Accepted
time: 0ms
memory: 3548kb

input:

1 2 6

output:

0

result:

ok single line: '0'

Test #4:

score: 0
Accepted
time: 0ms
memory: 3616kb

input:

1 2 7

output:

0

result:

ok single line: '0'

Test #5:

score: 0
Accepted
time: 0ms
memory: 3616kb

input:

2 2 8

output:

0

result:

ok single line: '0'

Test #6:

score: 0
Accepted
time: 0ms
memory: 3604kb

input:

2 3 9

output:

16

result:

ok single line: '16'

Test #7:

score: 0
Accepted
time: 0ms
memory: 3600kb

input:

2 3 10

output:

16

result:

ok single line: '16'

Test #8:

score: 0
Accepted
time: 0ms
memory: 3840kb

input:

2 3 11

output:

16

result:

ok single line: '16'

Test #9:

score: 0
Accepted
time: 0ms
memory: 3544kb

input:

3 4 12

output:

64

result:

ok single line: '64'

Test #10:

score: 0
Accepted
time: 0ms
memory: 3544kb

input:

3 4 13

output:

64

result:

ok single line: '64'

Test #11:

score: 0
Accepted
time: 0ms
memory: 3548kb

input:

3 4 14

output:

64

result:

ok single line: '64'

Test #12:

score: 0
Accepted
time: 0ms
memory: 3540kb

input:

3 5 15

output:

80

result:

ok single line: '80'

Test #13:

score: 0
Accepted
time: 126ms
memory: 3600kb

input:

10000000 10000000 10000000

output:

1199999760000000

result:

ok single line: '1199999760000000'

Test #14:

score: 0
Accepted
time: 36ms
memory: 3604kb

input:

7663341 2799917 6434354

output:

125432496112224

result:

ok single line: '125432496112224'

Test #15:

score: 0
Accepted
time: 46ms
memory: 3584kb

input:

5847310 6503054 3563307

output:

196607948002960

result:

ok single line: '196607948002960'

Test #16:

score: 0
Accepted
time: 10ms
memory: 3552kb

input:

3131008 7950384 757301

output:

9176058698400

result:

ok single line: '9176058698400'

Test #17:

score: 0
Accepted
time: 121ms
memory: 3544kb

input:

9570661 9593872 9917084

output:

1100945395924880

result:

ok single line: '1100945395924880'

Test #18:

score: 0
Accepted
time: 30ms
memory: 3580kb

input:

3510873 8095808 2299177

output:

79848923155584

result:

ok single line: '79848923155584'

Test #19:

score: 0
Accepted
time: 2ms
memory: 3488kb

input:

7476400 3286922 144073

output:

332109011520

result:

ok single line: '332109011520'

Test #20:

score: 0
Accepted
time: 32ms
memory: 3616kb

input:

2528777 8583320 3053921

output:

86257168366272

result:

ok single line: '86257168366272'

Test #21:

score: 0
Accepted
time: 10ms
memory: 3608kb

input:

756027 9877774 6224461

output:

9145211051024

result:

ok single line: '9145211051024'

Test #22:

score: 0
Accepted
time: 20ms
memory: 3600kb

input:

1799348 1545770 5903860

output:

31551400528464

result:

ok single line: '31551400528464'

Test #23:

score: 0
Accepted
time: 36ms
memory: 3836kb

input:

2866047 8448813 9201454

output:

131427537714224

result:

ok single line: '131427537714224'

Test #24:

score: 0
Accepted
time: 0ms
memory: 3608kb

input:

3253 19822 15760

output:

169234080

result:

ok single line: '169234080'

Test #25:

score: 0
Accepted
time: 0ms
memory: 3612kb

input:

18973 6799 2004

output:

64208160

result:

ok single line: '64208160'

Test #26:

score: 0
Accepted
time: 0ms
memory: 3544kb

input:

1607 25903 7685

output:

41280624

result:

ok single line: '41280624'

Test #27:

score: 0
Accepted
time: 0ms
memory: 3580kb

input:

8763 27091 27201

output:

1228432400

result:

ok single line: '1228432400'

Test #28:

score: 0
Accepted
time: 0ms
memory: 3492kb

input:

3275 1018 17315

output:

16556752

result:

ok single line: '16556752'

Test #29:

score: 0
Accepted
time: 0ms
memory: 3540kb

input:

31480 24767 5816

output:

541074112

result:

ok single line: '541074112'

Test #30:

score: 0
Accepted
time: 0ms
memory: 3604kb

input:

22046 8058 12456

output:

985126032

result:

ok single line: '985126032'

Test #31:

score: 0
Accepted
time: 0ms
memory: 3600kb

input:

10321 22446 10938

output:

1327450496

result:

ok single line: '1327450496'

Test #32:

score: 0
Accepted
time: 0ms
memory: 3768kb

input:

14930 18763 2124

output:

72131040

result:

ok single line: '72131040'

Test #33:

score: 0
Accepted
time: 0ms
memory: 3492kb

input:

18366 14707 1959

output:

61355888

result:

ok single line: '61355888'

Test #34:

score: 0
Accepted
time: 0ms
memory: 3540kb

input:

4 4 4

output:

96

result:

ok single line: '96'

Test #35:

score: 0
Accepted
time: 0ms
memory: 3548kb

input:

5 5 5

output:

192

result:

ok single line: '192'

Test #36:

score: 0
Accepted
time: 0ms
memory: 3484kb

input:

6 6 6

output:

288

result:

ok single line: '288'

Test #37:

score: 0
Accepted
time: 0ms
memory: 3548kb

input:

7 7 7

output:

432

result:

ok single line: '432'

Test #38:

score: 0
Accepted
time: 0ms
memory: 3580kb

input:

8 8 8

output:

576

result:

ok single line: '576'

Test #39:

score: 0
Accepted
time: 0ms
memory: 3840kb

input:

9 9 9

output:

768

result:

ok single line: '768'

Test #40:

score: 0
Accepted
time: 0ms
memory: 3616kb

input:

10 10 10

output:

960

result:

ok single line: '960'