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

Submission Time
Task B - やさしいおばけ の たんじょうびかい (Friendly Ghost's Birthday Party)
User fura2
Language IOI-Style C++ (GCC 5.4.1)
Score 40
Code Size 1788 Byte
Status WA
Exec Time 295 ms
Memory 7808 KB

Judge Result

Set Name Subtask1 Subtask2 Subtask3
Score / Max Score 0 / 19 40 / 40 0 / 41
Status
WA × 8
AC × 8
WA × 16
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