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 |
|
| 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 |