#include <stdio.h> #define NUM 10 #define D 0.0000001 #define c 299792458 // 0 == US, 1 == YES, 2 == AWAY, 3 == time, 4 == next; int main() { int N, data[NUM], k = 0, l, i, j, disp[NUM], count[NUM], newnum[NUM]; double f0[NUM], f1[NUM], v[NUM], dist[NUM]; scanf("%d", &N); for(i = 0; i < N; i++){ scanf("%d%lf%lf%d", &data[i], &f0[i], &f1[i], &disp[i]); } for(i = 0; i < N; i++){ if(1 == data[i]){ count[i] = 0; } else{ v[i] = (double)(f1[i] - f0[i]) * c/ (f0[i] + f1[i]); dist[i] = (double)disp[i] * 0.000001 * c / 2; if(dist[i] <= 200000.0){ if(f0[i] - f1[i] < D){ newnum[k++] = i; } else{ count[i] = 2; } } else if(dist[i] > 200){ count[i] = 4; } } } for(i = 0; i < k - 1; i++){ l = i; for(j = i + 1; j < k; j++){ if(newnum[j] < newnum[l]){ l = j; } if(i != l){ int temp = newnum[i]; newnum[i] = newnum[l]; newnum[l] = temp; } } } if(k <= 3){ for(i = 0; i < 3; i++){ count[newnum[i]] = 1; } } else{ for(i = 0; i < 3; i++){ count[newnum[i]] = 1; } for(i = 3; i < k; i++){ count[newnum[i]] = 3; } } for(i = 0; i < N; i++){ switch(count[i]){ case 0: printf("Target%d:NO:ONE OF US\n", i + 1); break; case 1: printf("Target%d:YES\n", i + 1); break; case 2: printf("Target%d:NO:AWAY\n", i + 1); break; case 3: printf("Target%d:NO:NEXT TIME\n", i + 1); break; case 4: printf("Target%d:NO:%.4lf\n", i + 1, (dist[i] - 200000) / v[i]); break; default: printf("MGJ\n"); break; } } return 0; } |
Double click to view unformatted code.