Submission #7287509


Source Code Expand

#include<bits/stdc++.h>
using namespace std;
#define ll long long
int n;
struct node{
	double x,y;
}k[102];
double dis(double a,double b){return sqrt(a*a+b*b);}
bool cmp(node a,node b){return a.x>b.x;}
bool cmp2(node a,node b){return a.x<b.x;}
bool cmp3(node a,node b){return a.y>b.y;}
bool cmp4(node a,node b){return a.y<b.y;}
bool cmp5(node a,node b){return dis(a.x,a.y)>dis(b.x,b.y);}
bool cmp6(node a,node b){return dis(a.x,a.y)<dis(b.x,b.y);}
double ans;
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
		cin>>k[i].x>>k[i].y;
	sort(k+1,k+n+1,cmp);
	for(int i=1;i<=n;i++){
		double xx=k[i].x,yy=k[i].y;
		for(int j=1;j<=n;j++)
			if(i!=j&&dis(xx+k[j].x,yy+k[j].y)>dis(xx,yy))
				xx+=k[j].x,yy+=k[j].y;
		ans=max(ans,dis(xx,yy));
	}
	sort(k+1,k+n+1,cmp2);
	for(int i=1;i<=n;i++){
		double xx=k[i].x,yy=k[i].y;
		for(int j=1;j<=n;j++)
			if(i!=j&&dis(xx+k[j].x,yy+k[j].y)>dis(xx,yy))
				xx+=k[j].x,yy+=k[j].y;
		ans=max(ans,dis(xx,yy));
	}
	sort(k+1,k+n+1,cmp3);
	for(int i=1;i<=n;i++){
		double xx=k[i].x,yy=k[i].y;
		for(int j=1;j<=n;j++)
			if(i!=j&&dis(xx+k[j].x,yy+k[j].y)>dis(xx,yy))
				xx+=k[j].x,yy+=k[j].y;
		ans=max(ans,dis(xx,yy));
	}
	sort(k+1,k+n+1,cmp4);
	for(int i=1;i<=n;i++){
		double xx=k[i].x,yy=k[i].y;
		for(int j=1;j<=n;j++)
			if(i!=j&&dis(xx+k[j].x,yy+k[j].y)>dis(xx,yy))
				xx+=k[j].x,yy+=k[j].y;
		ans=max(ans,dis(xx,yy));
	}
	sort(k+1,k+n+1,cmp5);
	for(int i=1;i<=n;i++){
		double xx=k[i].x,yy=k[i].y;
		for(int j=1;j<=n;j++)
			if(i!=j&&dis(xx+k[j].x,yy+k[j].y)>dis(xx,yy))
				xx+=k[j].x,yy+=k[j].y;
		ans=max(ans,dis(xx,yy));
	}
	sort(k+1,k+n+1,cmp6);
	for(int i=1;i<=n;i++){
		double xx=k[i].x,yy=k[i].y;
		for(int j=1;j<=n;j++)
			if(i!=j&&dis(xx+k[j].x,yy+k[j].y)>dis(xx,yy))
				xx+=k[j].x,yy+=k[j].y;
		ans=max(ans,dis(xx,yy));
	}
	srand(time(0));
	for(int i=1;i<=1000;i++){
		int pd[102],num=0;
		double xx=0,yy=0;
		memset(pd,0,sizeof(pd));
		for(int j=1;j<=n;j++){
			int op=rand()%n+1;
			while(pd[op])op=rand()%n+1;
			if(dis(xx+k[op].x,yy+k[op].y)>dis(xx,yy)) 
				xx+=k[op].x,yy+=k[op].y;
			pd[op]=1;
		}
		ans=max(ans,dis(xx,yy));
	}
	printf("%.15lf",ans);
    return 0;
}

Submission Info

Submission Time
Task F - Engines
User Alex_Wei
Language C++14 (GCC 5.4.1)
Score 600
Code Size 2203 Byte
Status AC
Exec Time 11 ms
Memory 256 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 600 / 600
Status
AC × 7
AC × 41
Set Name Test Cases
Sample 00-sample-01.txt, 00-sample-02.txt, 00-sample-03.txt, 00-sample-04.txt, 00-sample-05.txt, 00-sample-06.txt, 00-sample-07.txt
All 00-sample-01.txt, 00-sample-02.txt, 00-sample-03.txt, 00-sample-04.txt, 00-sample-05.txt, 00-sample-06.txt, 00-sample-07.txt, 01-random-very-small-01.txt, 01-random-very-small-02.txt, 01-random-very-small-03.txt, 02-random-small-01.txt, 02-random-small-02.txt, 02-random-small-03.txt, 03-random-01.txt, 03-random-02.txt, 03-random-03.txt, 04-zero-01.txt, 05-same-01.txt, 05-same-02.txt, 06-linear-01.txt, 06-linear-02.txt, 06-linear-03.txt, 07-linear-positive-01.txt, 07-linear-positive-02.txt, 07-linear-positive-03.txt, 08-90-degree-01.txt, 08-90-degree-02.txt, 09-180-degree-01.txt, 09-180-degree-02.txt, 10-sandglass-01.txt, 10-sandglass-02.txt, 11-circle-01.txt, 11-circle-02.txt, 11-circle-03.txt, 11-circle-04.txt, 11-circle-05.txt, 12-square-01.txt, 12-square-02.txt, 12-square-03.txt, 13-corner-01.txt, 13-corner-02.txt
Case Name Status Exec Time Memory
00-sample-01.txt AC 1 ms 256 KiB
00-sample-02.txt AC 1 ms 256 KiB
00-sample-03.txt AC 1 ms 256 KiB
00-sample-04.txt AC 1 ms 256 KiB
00-sample-05.txt AC 1 ms 256 KiB
00-sample-06.txt AC 1 ms 256 KiB
00-sample-07.txt AC 2 ms 256 KiB
01-random-very-small-01.txt AC 2 ms 256 KiB
01-random-very-small-02.txt AC 10 ms 256 KiB
01-random-very-small-03.txt AC 11 ms 256 KiB
02-random-small-01.txt AC 2 ms 256 KiB
02-random-small-02.txt AC 11 ms 256 KiB
02-random-small-03.txt AC 11 ms 256 KiB
03-random-01.txt AC 2 ms 256 KiB
03-random-02.txt AC 11 ms 256 KiB
03-random-03.txt AC 11 ms 256 KiB
04-zero-01.txt AC 9 ms 256 KiB
05-same-01.txt AC 4 ms 256 KiB
05-same-02.txt AC 10 ms 256 KiB
06-linear-01.txt AC 2 ms 256 KiB
06-linear-02.txt AC 5 ms 256 KiB
06-linear-03.txt AC 11 ms 256 KiB
07-linear-positive-01.txt AC 3 ms 256 KiB
07-linear-positive-02.txt AC 6 ms 256 KiB
07-linear-positive-03.txt AC 10 ms 256 KiB
08-90-degree-01.txt AC 9 ms 256 KiB
08-90-degree-02.txt AC 10 ms 256 KiB
09-180-degree-01.txt AC 7 ms 256 KiB
09-180-degree-02.txt AC 11 ms 256 KiB
10-sandglass-01.txt AC 7 ms 256 KiB
10-sandglass-02.txt AC 11 ms 256 KiB
11-circle-01.txt AC 1 ms 256 KiB
11-circle-02.txt AC 2 ms 256 KiB
11-circle-03.txt AC 2 ms 256 KiB
11-circle-04.txt AC 6 ms 256 KiB
11-circle-05.txt AC 10 ms 256 KiB
12-square-01.txt AC 9 ms 256 KiB
12-square-02.txt AC 11 ms 256 KiB
12-square-03.txt AC 11 ms 256 KiB
13-corner-01.txt AC 1 ms 256 KiB
13-corner-02.txt AC 1 ms 256 KiB