結果
| 問題 |
No.4 おもりと天秤
|
| コンテスト | |
| ユーザー |
akakimidori
|
| 提出日時 | 2015-07-27 21:13:48 |
| 言語 | C90 (gcc 12.3.0) |
| 結果 |
AC
|
| 実行時間 | 1 ms / 5,000 ms |
| コード長 | 499 bytes |
| コンパイル時間 | 217 ms |
| コンパイル使用メモリ | 21,888 KB |
| 実行使用メモリ | 5,376 KB |
| 最終ジャッジ日時 | 2024-06-26 09:15:23 |
| 合計ジャッジ時間 | 890 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 23 |
コンパイルメッセージ
main.c: In function ‘main’:
main.c:5:9: warning: ignoring return value of ‘scanf’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
5 | scanf("%d",&N);
| ^~~~~~~~~~~~~~
main.c:10:17: warning: ignoring return value of ‘scanf’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
10 | scanf("%d",W+i);
| ^~~~~~~~~~~~~~~
ソースコード
#include<stdio.h>
int main(void){
int N;
scanf("%d",&N);
int W[100];
int i;
int sum=0;
for(i=0;i<N;i++){
scanf("%d",W+i);
sum+=W[i];
}
if(sum%2!=0){
printf("impossible\n");
return 0;
}
char p[10001];
for(i=0;i<=10000;i++) p[i]=0;
p[0]=1;
int max=0;
for(i=0;i<N;i++){
int j;
for(j=max;j>=0;j--){
if(p[j]){
p[j+W[i]]=1;
}
}
max=(W[i]+max>=sum/2?sum/2-1:W[i]+max);
}
if(p[sum/2]){
printf("possible\n");
} else {
printf("impossible\n");
}
return 0;
}
akakimidori