Submission #4991

#TimeUsernameProblemLanguageResultExecution timeMemory
4991lingxiangDivide into triangle (kriii1_D)C++98
0 / 1
0 ms1100 KiB
/** 광활한 영토가 있다. 이 영토는 xy 평면으로 나타낼 수 있고 정확히 3N개의 말뚝이 박혀 있다. 말뚝은 서로 다른 위치에 박혀 있으며, 세 개의 말뚝이 일직선 상에 있는 경우는 없다. N명의 사람이 영토를 나누려고 한다. 그들은 각자 3개의 말뚝을 선택하여 말뚝들을 선분으로 이었을 때 생기는 삼각형의 영역을 각자의 영토로 인정하기로 하였다. 물론 두 사람이 선택한 영토가(경계나 모서리라도) 조금이라도 겹치는 일은 일어나서는 안 된다. 그러나 조건을 만족하면서 서로의 말뚝을 선택하는 일은 똑똑하지 못한 그들에게 상당히 어려운 일이었다. 그렇기에 지나가던 똑똑한 당신에게 이 일을 맡기기로 하였다. 입력 형식 첫 번째 줄에는 사람들의 수 N (1≤N≤300)이 주어진다. 다음 3N줄에는 각 말뚝의 위치를 나타내는 두 정수 x,y (?10^6≤x,y≤10^6) 가 공백으로 구분되어 주어진다. 말뚝은 입력 받는 순서대로 1에서 3N까지의 번호가 붙는다. 출력 형식 N개의 줄에 걸쳐서 각 사람이 선택한 세 말뚝의 번호를 공백으로 구분하여 출력한다. (잘 생각해보면 알겠지만 불가능한 경우는 없다.) **/ #include<stdio.h> #include<vector> #include<algorithm> using namespace std; pair<pair<int,int>,int> a[1000]; int N; void input(){ scanf("%d",&N); for(int i=0;i<3*N;i++){ scanf("%d %d",&a[i].first.first,&a[i].first.second); a[i].second=i+1; } } void solve(){ sort(a,a+N); } void output(){ for(int i=0;i<N;i++){ printf("%d %d %d\n",a[3*i].second,a[3*i+1].second,a[3*i+2].second); } } int main(){ input(); solve(); output(); return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...