結果
問題 | No.132 点と平面との距離 |
ユーザー | akakimidori |
提出日時 | 2016-12-12 20:14:02 |
言語 | C90 (gcc 11.4.0) |
結果 |
AC
|
実行時間 | 62 ms / 5,000 ms |
コード長 | 972 bytes |
コンパイル時間 | 635 ms |
コンパイル使用メモリ | 25,728 KB |
実行使用メモリ | 5,376 KB |
最終ジャッジ日時 | 2024-06-26 03:14:26 |
合計ジャッジ時間 | 1,209 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 3 ms
5,248 KB |
testcase_01 | AC | 20 ms
5,376 KB |
testcase_02 | AC | 62 ms
5,376 KB |
コンパイルメッセージ
main.c: In function ‘run’: main.c:9:3: warning: ignoring return value of ‘scanf’ declared with attribute ‘warn_unused_result’ [-Wunused-result] 9 | scanf("%d",&n); | ^~~~~~~~~~~~~~ main.c:12:3: warning: ignoring return value of ‘scanf’ declared with attribute ‘warn_unused_result’ [-Wunused-result] 12 | scanf("%lf%lf%lf",p,p+1,p+2); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ main.c:19:7: warning: ignoring return value of ‘scanf’ declared with attribute ‘warn_unused_result’ [-Wunused-result] 19 | scanf("%lf",q+i*3+k); | ^~~~~~~~~~~~~~~~~~~~
ソースコード
#include<stdio.h> #include<stdlib.h> #include<math.h> #define POS(i,j) ((i)*3+(j)) void run(void){ int n; scanf("%d",&n); double p[3]; scanf("%lf%lf%lf",p,p+1,p+2); double *q=(double *)malloc(sizeof(double)*3*n); int i; for(i=0;i<n;i++){ int k; for(k=0;k<3;k++){ scanf("%lf",q+i*3+k); q[POS(i,k)]-=p[k]; } } double sum=0; int j,k,l; for(i=0;i<n;i++){ double I[3]; for(l=0;l<3;l++){ I[l]=q[POS(i,l)]; } for(j=i+1;j<n;j++){ double J[3]; for(l=0;l<3;l++){ J[l]=q[POS(j,l)]-I[l]; } for(k=j+1;k<n;k++){ double K[3]; for(l=0;l<3;l++){ K[l]=q[POS(k,l)]-I[l]; } double t[3]; for(l=0;l<3;l++){ t[l]=J[(l+1)%3]*K[(l+2)%3]-J[(l+2)%3]*K[(l+1)%3]; } double nu=0; double de=0; for(l=0;l<3;l++){ nu+=t[l]*I[l]; de+=t[l]*t[l]; } nu=nu>=0?nu:-nu; de=sqrt(de); sum+=nu/de; } } } printf("%.9lf\n",sum); return; } int main(void){ run(); return 0; }