結果
| 問題 |
No.10 +か×か
|
| コンテスト | |
| ユーザー |
akakimidori
|
| 提出日時 | 2016-12-11 23:42:54 |
| 言語 | C90 (gcc 12.3.0) |
| 結果 |
AC
|
| 実行時間 | 12 ms / 5,000 ms |
| コード長 | 796 bytes |
| コンパイル時間 | 140 ms |
| コンパイル使用メモリ | 22,272 KB |
| 実行使用メモリ | 18,172 KB |
| 最終ジャッジ日時 | 2024-12-14 15:37:50 |
| 合計ジャッジ時間 | 738 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 12 |
コンパイルメッセージ
main.c: In function ‘run’:
main.c:8:3: warning: ignoring return value of ‘scanf’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
8 | scanf("%d%d",&n,&total);
| ^~~~~~~~~~~~~~~~~~~~~~~
main.c:12:5: warning: ignoring return value of ‘scanf’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
12 | scanf("%d",A+i);
| ^~~~~~~~~~~~~~~
ソースコード
#include<stdio.h>
#include<stdlib.h>
#define POS(i,j) ((i)*(total+1)+(j))
void run(void){
int n,total;
scanf("%d%d",&n,&total);
int *A=(int *)malloc(sizeof(int)*(n+1));
int i;
for(i=1;i<=n;i++){
scanf("%d",A+i);
}
int *dp=(int *)calloc((total+1)*(n+1),sizeof(int));
dp[POS(n,total)]=1;
for(i=n;i>=2;i--){
int k;
for(k=total;k>=0;k--){
if(dp[POS(i,k)]){
if(k-A[i]>=0){
dp[POS(i-1,k-A[i])]=1;
}
if(k%A[i]==0){
dp[POS(i-1,k/A[i])]=1;
}
}
}
}
int now=A[1];
for(i=2;i<=n;i++){
int t=now+A[i];
if(t<=total && dp[POS(i,t)]){
printf("+");
now=t;
} else {
printf("*");
now=now*A[i];
}
}
printf("\n");
return;
}
int main(void){
run();
return 0;
}
akakimidori