結果
| 問題 |
No.463 魔法使いのすごろく🎲
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2016-12-15 11:07:08 |
| 言語 | C90 (gcc 12.3.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,120 bytes |
| コンパイル時間 | 248 ms |
| コンパイル使用メモリ | 24,064 KB |
| 実行使用メモリ | 6,824 KB |
| 最終ジャッジ日時 | 2024-11-30 08:20:03 |
| 合計ジャッジ時間 | 1,231 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | WA * 3 |
| other | AC * 9 WA * 27 |
コンパイルメッセージ
main.c: In function ‘main’:
main.c:7:9: warning: ignoring return value of ‘scanf’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
7 | scanf("%d %d",&n,&m);
| ^~~~~~~~~~~~~~~~~~~~
main.c:11:17: warning: ignoring return value of ‘scanf’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
11 | scanf("%ld",&c[i]);
| ^~~~~~~~~~~~~~~~~~
ソースコード
#include<stdio.h>
int main(){
int n,m,i,j,k;
long c[100];
double e[100][101],ans[100],t;
scanf("%d %d",&n,&m);
c[0]=0;
c[n-1]=0;
for(i=1;i<n-1;i++){
scanf("%ld",&c[i]);
}
c[0]=0;
c[n-1]=0;
for(i=0;i<n;i++){
for(j=0;j<n;j++){
e[i][j]=0.0;
}
e[i][i]=1.0;
e[i][100]=(double)c[i];
for(j=1;j<=m;j++){
e[i][(i+j>=n)?(2*n-i-j-2):i+j]-=1.0/m;
}
}
for(i=0;i<n;i++){
for(j=i+1;j<n;j++){
t=e[j][i]/e[i][i];
e[j][i]=0;
for(k=i+1;k<n;k++){
e[j][k]-=e[i][k]*t;
}
e[j][100]-=e[i][100]*t;
}
}
/*for(i=0;i<n;i++){
for(j=0;j<n;j++){
printf("%+f*e_%d ",e[i][j],j);
}
printf("= %f\n\n",e[i][100]);
}*/
for(i=n-1;i>=0;i--){
t=1.0/e[i][i];
for(j=i;j<n;j++){
e[i][j]*=t;
}
e[i][100]*=t;
for(j=i+1;j<n;j++){
e[i][100]-=e[j][100]*e[i][j];
}
}
for(i=n-1;i>=0;i--){
//ans
if(i+m<n-1){
ans[i]=e[i][100];
for(j=i+1;j<=i+m && j<n;j++){
ans[i]=(ans[i]>e[j][100])?e[j][100]:ans[i];
}
t=0;
for(j=1;j<=m;j++){
t+=ans[i+j]+c[i+j];
}
t/=m;
ans[i]=(t<ans[i])?t:ans[i];
}else{
ans[i]=0;
}
}
printf("%.12f\n",ans[0]);
return 0;
}