Submission #275024
Source Code Expand
#include <algorithm>
#include "grader.h"
#include "ghost.h"
using namespace std;
#define REPS(i,s,n) for(int i=s;i<n;i++)
#define REP(i,n) REPS(i,0,n)
void FindGhost(
int N,
double Cx[],double Cy[],double Cz[],
double Ty[],double Tz[]
) {
double minTy = Ty[0];
double maxTy = Ty[0];
double minTz = Tz[0];
double maxTz = Tz[0];
REPS(i,1,N) {
minTy = min(minTy,Ty[i]);
maxTy = max(maxTy,Ty[i]);
minTz = min(minTz,Tz[i]);
maxTz = max(maxTz,Tz[i]);
}
int i_minTy, i_maxTy, i_minTz, i_maxTz;
double j_minTy, j_maxTy, j_minTz, j_maxTz;
i_minTy = i_maxTy = i_minTz = i_maxTz = 0;
j_minTy = (Cy[0]-minTy)/Cx[0];
j_maxTy = (maxTy-Cy[0])/Cx[0];
j_minTz = (Cz[0]-minTz)/Cx[0];
j_maxTz = (maxTz-Cz[0])/Cx[0];
REPS(i,1,N) {
if ( j_minTy < (Cy[i]-minTy)/Cx[i] )
{ i_minTy=i; j_minTy=(Cy[i]-minTy)/Cx[i]; }
if ( j_maxTy < (maxTy-Cy[i])/Cx[i] )
{ i_maxTy=i; j_maxTy=(maxTy-Cy[i])/Cx[i]; }
if ( j_minTz < (Cz[i]-minTz)/Cx[i] )
{ i_minTz=i; j_minTz=(Cz[i]-minTz)/Cx[i]; }
if ( j_maxTz < (maxTz-Cz[i])/Cx[i] )
{ i_maxTz=i; j_maxTz=(maxTz-Cz[i])/Cx[i]; }
}
double s1, s2;
double gx, gy, gz;
s1 = ( (Cx[i_maxTy]-0) * (minTy-maxTy) ) / 2;
s2 = ( (Cx[i_maxTy]-0) * (maxTy-Cy[i_minTy])
- (Cy[i_maxTy]-maxTy) * (0-Cx[i_minTy]) ) / 2;
gx = 0 + (Cx[i_minTy]- 0) * s1 / (s1+s2);
gy = minTy + (Cy[i_minTy]-minTy) * s1 / (s1+s2);
s1 = ( (Cx[i_maxTz]-0) * (minTz-maxTz)
- (Cz[i_maxTz]-maxTz) * (0-0) ) / 2;
s2 = ( (Cx[i_maxTz]-0) * (maxTz-Cz[i_minTz])
- (Cz[i_maxTz]-maxTz) * (0-Cx[i_minTz]) ) / 2;
gz = minTz + (Cz[i_minTz]-minTz) * s1 / (s1+s2);
if (s1+s2 == 0) gz = 0;
answer(gx, gy, gz);
}
Submission Info
Judge Result
Set Name |
Subtask1 |
Subtask2 |
Subtask3 |
Score / Max Score |
19 / 19 |
40 / 40 |
41 / 41 |
Status |
|
|
|
Set Name |
Test Cases |
Subtask1 |
subtask1/1, subtask1/2, subtask1/3, subtask1/4, subtask1/5, subtask1/6, subtask1/7, subtask1/8 |
Subtask2 |
subtask2/1, subtask2/2, subtask2/3, subtask2/4, subtask2/5, subtask2/6, subtask2/7, subtask2/8 |
Subtask3 |
subtask1/1, subtask1/2, subtask1/3, subtask1/4, subtask1/5, subtask1/6, subtask1/7, subtask1/8, subtask3/1, subtask3/2, subtask3/3, subtask3/4, subtask3/5, subtask3/6, subtask3/7, subtask3/8 |
Case Name |
Status |
Exec Time |
Memory |
subtask1/1 |
AC |
23 ms |
800 KB |
subtask1/2 |
AC |
21 ms |
928 KB |
subtask1/3 |
AC |
22 ms |
800 KB |
subtask1/4 |
AC |
22 ms |
928 KB |
subtask1/5 |
AC |
22 ms |
800 KB |
subtask1/6 |
AC |
21 ms |
928 KB |
subtask1/7 |
AC |
21 ms |
804 KB |
subtask1/8 |
AC |
21 ms |
932 KB |
subtask2/1 |
AC |
242 ms |
4576 KB |
subtask2/2 |
AC |
246 ms |
4648 KB |
subtask2/3 |
AC |
245 ms |
4644 KB |
subtask2/4 |
AC |
243 ms |
4644 KB |
subtask2/5 |
AC |
245 ms |
4656 KB |
subtask2/6 |
AC |
239 ms |
4640 KB |
subtask2/7 |
AC |
229 ms |
4520 KB |
subtask2/8 |
AC |
228 ms |
4512 KB |
subtask3/1 |
AC |
280 ms |
4704 KB |
subtask3/2 |
AC |
280 ms |
4652 KB |
subtask3/3 |
AC |
282 ms |
4636 KB |
subtask3/4 |
AC |
279 ms |
4652 KB |
subtask3/5 |
AC |
277 ms |
4656 KB |
subtask3/6 |
AC |
280 ms |
4644 KB |
subtask3/7 |
AC |
278 ms |
4516 KB |
subtask3/8 |
AC |
270 ms |
4520 KB |