Submission #34739
Source Code Expand
#include<algorithm>
#include"ghost.h"
#include"grader.h"
#define rep(i,n) for(int i=0;i<(n);i++)
using namespace std;
const double EPS=1e-11;
template<class T>
struct point{
T x,y;
point operator+(const point &a)const{ return (point){x+a.x,y+a.y}; }
point operator-(const point &a)const{ return (point){x-a.x,y-a.y}; }
};
template<class T>
point<T> operator*(T c,const point<T> &a){ return (point<T>){c*a.x,c*a.y}; }
bool cmp_y(const point<double> &a,const point<double> &b){
return a.y+EPS<b.y;
}
template<class T>
T cross(const point<T> &a,const point<T> &b){ return a.x*b.y-a.y*b.x; }
template<class T>
struct line{ point<T> a,b; };
template<class T>
point<double> get_intersect(const line<T> &L1,const line<T> &L2){
double a1=cross(L1.b-L1.a,L2.b-L2.a);
double a2=cross(L1.b-L1.a,L1.b-L2.a);
if(a1==0) return L1.a; // L1 == L2
return (point<double>)L2.a+a2/a1*(point<double>)(L2.b-L2.a);
}
void FindGhost(int n,double Cx[],double Cy[],double Cz[],double Ty[],double Tz[]){
if(n==1){
for(;;); // hogera!!
}
rep(i,n) if(Cz[i]!=0 || Tz[i]!=0){
answer(0.0,0.0,0.0);
return;
}
static point<double> C[100000],T[100000]; // candle, target
rep(i,n){
C[i]=(point<double>){Cx[i],Cy[i]};
T[i]=(point<double>){0,Ty[i]};
}
sort(C,C+n,cmp_y);
sort(T,T+n,cmp_y);
const line<double> L={(point<double>){1,0},(point<double>){1,1}}; // 直線 x=1
double y_min=77,y_max=-77;
rep(i,n){
y_min=min(y_min,get_intersect((line<double>){C[i],T[n-1]},L).y);
y_max=max(y_max,get_intersect((line<double>){C[i],T[ 0 ]},L).y);
}
point<double> ans=get_intersect((line<double>){(point<double>){1,y_min},T[n-1]},
(line<double>){(point<double>){1,y_max},T[ 0 ]});
answer(ans.x,ans.y,0);
}
Submission Info
Judge Result
Set Name |
Subtask1 |
Subtask2 |
Subtask3 |
Score / Max Score |
0 / 19 |
40 / 40 |
0 / 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 |
WA |
22 ms |
780 KB |
subtask1/2 |
WA |
22 ms |
772 KB |
subtask1/3 |
WA |
21 ms |
784 KB |
subtask1/4 |
WA |
22 ms |
760 KB |
subtask1/5 |
WA |
21 ms |
776 KB |
subtask1/6 |
WA |
20 ms |
780 KB |
subtask1/7 |
WA |
20 ms |
804 KB |
subtask1/8 |
WA |
19 ms |
788 KB |
subtask2/1 |
AC |
291 ms |
7804 KB |
subtask2/2 |
AC |
295 ms |
7772 KB |
subtask2/3 |
AC |
291 ms |
7792 KB |
subtask2/4 |
AC |
291 ms |
7808 KB |
subtask2/5 |
AC |
286 ms |
7672 KB |
subtask2/6 |
AC |
289 ms |
7672 KB |
subtask2/7 |
AC |
276 ms |
7540 KB |
subtask2/8 |
AC |
273 ms |
7540 KB |
subtask3/1 |
WA |
282 ms |
4604 KB |
subtask3/2 |
WA |
278 ms |
4600 KB |
subtask3/3 |
WA |
280 ms |
4600 KB |
subtask3/4 |
WA |
279 ms |
4592 KB |
subtask3/5 |
WA |
279 ms |
4612 KB |
subtask3/6 |
WA |
281 ms |
4604 KB |
subtask3/7 |
WA |
272 ms |
4600 KB |
subtask3/8 |
WA |
276 ms |
4568 KB |