Submission #232103


Source Code Expand

#include <cstdio>
#include <algorithm>
#include <vector>
#include <string>
#include <queue>
#include <cstring>
#include <cmath>
#include <cstdlib>
#include <iostream>

using namespace std;
typedef long long i64;
typedef vector<int> ivec;

const int INF = 1001001001;

int in() { int x; scanf("%d", &x); return x; }

int N, Q;

struct PT {
	i64 x, y, z;
	PT() { }
	PT(i64 x, i64 y, i64 z) : x(x), y(y), z(z) { }
	PT operator+(const PT& a) const { return PT(x + a.x, y + a.y, z + a.z); }
	PT operator-(const PT& a) const { return PT(x - a.x, y - a.y, z - a.z); }
	PT operator-() const { return PT(-x, -y, -z); }
	PT operator*(const i64 k) const { return PT(x*k, y*k, z*k); }
	i64 dot(const PT& a) const { return x*a.x + y*a.y + z*a.z; }
	i64 abs2() const { return x*x + y*y + z*z; }
	PT cross(const PT& a) const { return PT(y*a.z - z*a.y, z*a.x - x*a.z, x*a.y - y*a.x); }
};

PT P[64];
i64 R[64];
i64 L[64];

bool intersect(PT a, PT b, PT o, i64 r) {
	if ((b - a).dot(o - a) < 0 || (a - b).dot(o - b) < 0) {
		i64 d1 = (o - a).abs2();
		i64 d2 = (o - b).abs2();
		return min(d1, d2) <= r * r;
	}

	PT c = (b - a).cross(o - a);
	return c.abs2() <= (b - a).abs2() * r * r;
}

i64 solve(PT a, PT b) {
	i64 res = 0;
	for (int i = 0; i < N; ++i) {
		if (intersect(a, b, P[i], R[i])) {
			res += L[i];
		}
	}
	return res;
}

int main()
{
	N = in();
	Q = in();
	for (int i = 0; i < N; ++i) {
		P[i].x = in();
		P[i].y = in();
		P[i].z = in();
		R[i] = in();
		scanf("%lld", &L[i]);
	}

	for (int i = 0; i < Q; ++i) {
		PT a, b;
		a.x = in(); a.y = in(); a.z = in();
		b.x = in(); b.y = in(); b.z = in();
		printf("%lld\n", solve(a, b));
	}
	return 0;
}

Submission Info

Submission Time
Task C - Magic Bullet
User Operasan
Language C++11 (GCC 4.8.1)
Score 100
Code Size 1722 Byte
Status AC
Exec Time 27 ms
Memory 924 KiB

Compile Error

./Main.cpp: In function ‘int in()’:
./Main.cpp:17:34: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
 int in() { int x; scanf("%d", &x); return x; }
                                  ^
./Main.cpp: In function ‘int main()’:
./Main.cpp:68:23: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
   scanf("%lld", &L[i]);
                       ^

Judge Result

Set Name All
Score / Max Score 100 / 100
Status
AC × 56
Set Name Test Cases
All 00_sample1, 00_sample2, 00_sample3, 10_random_00, 10_random_01, 10_random_02, 10_random_03, 10_random_04, 10_random_05, 10_random_06, 10_random_07, 10_random_08, 10_random_09, 10_random_10, 10_random_11, 10_random_12, 10_random_13, 10_random_14, 10_random_15, 10_random_16, 10_random_17, 10_random_18, 10_random_19, 10_random_20, 10_random_21, 10_random_22, 10_random_23, 10_random_24, 10_random_25, 10_random_26, 10_random_27, 10_random_28, 10_random_29, 10_random_30, 10_random_31, 10_random_32, 10_random_33, 10_random_34, 10_random_35, 10_random_36, 10_random_37, 10_random_38, 10_random_39, 10_random_40, 10_random_41, 10_random_42, 10_random_43, 10_random_44, 10_random_45, 10_random_46, 10_random_47, 10_random_48, 10_random_49, 90_man01, 90_man02, 90_man03
Case Name Status Exec Time Memory
00_sample1 AC 25 ms 924 KiB
00_sample2 AC 25 ms 804 KiB
00_sample3 AC 25 ms 796 KiB
10_random_00 AC 25 ms 800 KiB
10_random_01 AC 25 ms 800 KiB
10_random_02 AC 25 ms 796 KiB
10_random_03 AC 25 ms 800 KiB
10_random_04 AC 25 ms 672 KiB
10_random_05 AC 24 ms 672 KiB
10_random_06 AC 25 ms 920 KiB
10_random_07 AC 26 ms 804 KiB
10_random_08 AC 25 ms 800 KiB
10_random_09 AC 25 ms 800 KiB
10_random_10 AC 25 ms 804 KiB
10_random_11 AC 24 ms 800 KiB
10_random_12 AC 24 ms 800 KiB
10_random_13 AC 25 ms 924 KiB
10_random_14 AC 25 ms 800 KiB
10_random_15 AC 25 ms 672 KiB
10_random_16 AC 25 ms 800 KiB
10_random_17 AC 25 ms 920 KiB
10_random_18 AC 25 ms 732 KiB
10_random_19 AC 25 ms 672 KiB
10_random_20 AC 25 ms 792 KiB
10_random_21 AC 25 ms 672 KiB
10_random_22 AC 25 ms 800 KiB
10_random_23 AC 25 ms 736 KiB
10_random_24 AC 25 ms 800 KiB
10_random_25 AC 24 ms 800 KiB
10_random_26 AC 25 ms 736 KiB
10_random_27 AC 27 ms 796 KiB
10_random_28 AC 27 ms 788 KiB
10_random_29 AC 27 ms 792 KiB
10_random_30 AC 25 ms 912 KiB
10_random_31 AC 26 ms 800 KiB
10_random_32 AC 24 ms 792 KiB
10_random_33 AC 24 ms 796 KiB
10_random_34 AC 26 ms 912 KiB
10_random_35 AC 24 ms 916 KiB
10_random_36 AC 26 ms 856 KiB
10_random_37 AC 24 ms 800 KiB
10_random_38 AC 24 ms 920 KiB
10_random_39 AC 23 ms 700 KiB
10_random_40 AC 23 ms 668 KiB
10_random_41 AC 23 ms 796 KiB
10_random_42 AC 25 ms 800 KiB
10_random_43 AC 24 ms 924 KiB
10_random_44 AC 25 ms 920 KiB
10_random_45 AC 26 ms 792 KiB
10_random_46 AC 25 ms 796 KiB
10_random_47 AC 24 ms 804 KiB
10_random_48 AC 24 ms 672 KiB
10_random_49 AC 25 ms 676 KiB
90_man01 AC 24 ms 796 KiB
90_man02 AC 24 ms 668 KiB
90_man03 AC 24 ms 672 KiB