Submission #3542

#TimeUsernameProblemLanguageResultExecution timeMemory
3542hhosu107Divide into triangle (kriii1_D)C++98
1 / 1
0 ms1112 KiB
#include<stdio.h> int N; #define T 900 int no[T]; int dot[T][2]; double angle[T][2]; void swap(int *, int *); void swap2(double *, double *); int main(){ int i = 0; scanf("%d", &N); while(N--){ do{ scanf("%d %d", &dot[i][0], &dot[i][1]); if(dot[i][0] == 0) angle[i][1] += 0.5; else angle[i][0] = (double)dot[i][1] / (double)dot[i][0]; if(angle[i][0] < 0.0) angle[i][1] += 1.0; if(dot[i][1] < 0 || (dot[i][1] == 0 && dot[i][0] < 0)) angle[i][1] += 1.0; i++; no[i - 1] = i; }while(i % 3); } int j, k; for(j = 0; j < i - 1; j++){ for(k = j + 1; k < i; k++){ if(angle[j][1] > angle[k][1]){ swap2(&angle[j][0], &angle[k][0]); swap2(&angle[j][1], &angle[k][1]); swap(&dot[j][0], &dot[k][0]); swap(&dot[j][1], &dot[k][1]); swap(&no[j], &no[k]); } else if(angle[j][1] == angle[k][1]){ if(angle[j][0] > angle[k][0]){ swap2(&angle[j][0], &angle[k][0]); swap2(&angle[j][1], &angle[k][1]); swap(&dot[j][0], &dot[k][0]); swap(&dot[j][1], &dot[k][1]); swap(&no[j], &no[k]); } else if(angle[j][0] == angle[k][0]){ if(dot[j][0] * dot[j][0] > dot[k][0] * dot[k][0]){ swap2(&angle[j][0], &angle[k][0]); swap2(&angle[j][1], &angle[k][1]); swap(&dot[j][0], &dot[k][0]); swap(&dot[j][1], &dot[k][1]); swap(&no[j], &no[k]); } } } } } j = 0; do{ printf("%d %d %d\n", no[3 * j], no[3 * j + 1], no[3 * j + 2]); j++; }while(j * 3 != i); return 0; } void swap(int *x, int *y){ int temp; temp = *x; *x = *y; *y = temp; } void swap2(double *x, double *y){ double temp; temp = *x; *x = *y; *y = temp; }
#Verdict Execution timeMemoryGrader output
Fetching results...