Submission #3873

# Submission time Handle Problem Language Result Execution time Memory
3873 2013-08-31T09:00:57 Z hyeonjae0310 Divide into triangle (kriii1_D) C++
0 / 1
0 ms 1240 KB
#include <stdio.h>
#include <algorithm>
#include <vector>

using namespace std;

typedef struct POINT
{
	pair<long long, long long> point;
	int index;
}POINT;

POINT STD;

long long CCW(pair<long long, long long> a, pair<long long, long long> b, pair<long long, long long> c)
{
	return (a.first*b.second+b.first*c.second+c.first+a.second)-(a.second*b.first+b.second*c.first+c.second*a.first);
}

bool pair_compare(POINT a, POINT b)
{
	if(a.point.first != b.point.first)
	{
		return (a.point.first < b.point.first);
	}
	else
	{
		return (a.point.second < b.point.second);
	}
}

bool angle_compare(POINT a, POINT b)
{
	return (CCW(STD.point, a.point, b.point) > 0);
}

int main()
{
	vector<POINT> pt;
	int N;
	scanf("%d", &N);
	pt.resize(3*N);
	for(int i = 0 ; i < 3*N ; i++)
	{
		scanf("%lld %lld", &pt[i].point.first, &pt[i].point.second);
		pt[i].index = i+1;
	}
	sort(pt.begin(), pt.end(), pair_compare);
	STD = pt[0];
	sort(pt.begin()+1, pt.end(), angle_compare);
	for(int i = 0 ; i < 3*N ; i++)
	{
		printf("%d", pt[i].index);
		if((i+1)%3 == 0)
		{
			printf("\n");
		}
		else
		{
			printf(" ");
		}
	}
	return 0;
}
# Verdict Execution time Memory Grader output
1 Incorrect 0 ms 1240 KB Output isn't correct
2 Halted 0 ms 0 KB -