QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#718490#9434. Italian CuisineNana7WA 1ms5396kbC++141.6kb2024-11-06 20:39:522024-11-06 20:39:52

Judging History

你现在查看的是最新测评结果

  • [2024-11-06 20:39:52]
  • 评测
  • 测评结果:WA
  • 用时:1ms
  • 内存:5396kb
  • [2024-11-06 20:39:52]
  • 提交

answer

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#define I inline
#define int long long
using namespace std;

const double eps = 1e-10;
const int N = 100010;
struct point {
	int x,y;
	point(int xx=0,int yy=0) {
		x=xx; y=yy;
	}
}a[N],pc;
typedef point Vector;
int n;
double xc,yc,R;

I point operator+(point p1,point p2) {return point(p1.x+p2.x,p1.y+p2.y);};
I point operator-(point p1,point p2) {return point(p1.x-p2.x,p1.y-p2.y);};
I point operator*(int x,point p1) {return point(p1.x*x,p1.y*x);}; 

I int sgn(double x) {
	if(x<-eps) return -1;
	if(x>eps) return 1;
	return 0;
}
I int Cro(point A,point B) {
	return A.x*B.y-A.y*B.x;
}
I int area(point A,point B,point C) {
	return Cro(A-B,A-C);
}
I int Len(point A) {
	return A.x*A.x+A.y*A.y;
}
I double Abs(double x) {
	return x<0?-x:x;
}
I double dis_PL(point A,point B,point c) {
	return Abs(1.0*Cro(A-c,B-c)/sqrt(Len(A-B)));
}
I void solve() {
	cin>>n; cin>>xc>>yc>>R; pc=point(xc,yc);
	for(int i=1;i<=n;++i) cin>>a[i].x>>a[i].y;
	reverse(a+1,a+1+n);
	int r=2,ans=0,sum=0;
	for(int i=1;i<=n;++i) {
		if(i==r) r=r%n+1;		
		while(sgn(dis_PL(a[i],a[r%n+1],pc)-R)>=0&&sgn(Cro(pc-a[i],a[r%n+1]-a[i]))==sgn(Cro(pc-a[i],a[r]-a[i])))sum+=area(a[i],a[r%n+1],a[r]),r=r%n+1;
		ans=max(ans,sum);
		if(i!=r&&i!=n) {
			//cout<<"red"<<area(a[i],a[r],a[i+1])<<endl;
			sum-=area(a[i],a[r],a[i+1]);
		}
	}
	cout<<ans<<endl;
}
signed main()
{
	//cout<<area(point(0,0),point(1,1),point(1,0))<<endl;
	int T; cin>>T;
	while(T--) {
		solve();
	}
} 
/*
1
4
3 3 1
3 0
6 3
3 6
0 3

*/

詳細信息

Test #1:

score: 100
Accepted
time: 1ms
memory: 5396kb

input:

3
5
1 1 1
0 0
1 0
5 0
3 3
0 5
6
2 4 1
2 0
4 0
6 3
4 6
2 6
0 3
4
3 3 1
3 0
6 3
3 6
0 3

output:

5
24
0

result:

ok 3 number(s): "5 24 0"

Test #2:

score: -100
Wrong Answer
time: 1ms
memory: 5320kb

input:

1
6
0 0 499999993
197878055 -535013568
696616963 -535013568
696616963 40162440
696616963 499999993
-499999993 499999993
-499999993 -535013568

output:

286862654137719264

result:

wrong answer 1st numbers differ - expected: '0', found: '286862654137719264'