結果
| 問題 |
No.297 カードの数式
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2016-06-08 12:39:00 |
| 言語 | C90 (gcc 12.3.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,749 bytes |
| コンパイル時間 | 304 ms |
| コンパイル使用メモリ | 24,064 KB |
| 実行使用メモリ | 6,824 KB |
| 最終ジャッジ日時 | 2024-10-09 02:59:52 |
| 合計ジャッジ時間 | 1,310 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 16 WA * 7 |
コンパイルメッセージ
main.c: In function ‘main’:
main.c:12:3: warning: ignoring return value of ‘scanf’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
12 | scanf("%d\n",&N);
| ^~~~~~~~~~~~~~~~
main.c:14:5: warning: ignoring return value of ‘scanf’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
14 | scanf("%s",&c[i]);
| ^~~~~~~~~~~~~~~~~
ソースコード
#include <stdio.h>
#include <stdlib.h>
int main(){
int N,i,j;
int num[10]={0},num2[10]={0},p=0,m=0;
char c[15];
int num_count,sign_count;
int big[14]={0},big_num=0;
int little[14]={0},little_num=0;
int min=0,max=0;
scanf("%d\n",&N);
for(i=0;i<N;i++){
scanf("%s",&c[i]);
}
for(i=0;i<N;i++){
switch(c[i]){
case '+':p++;break;
case '-':m++;break;
case '0':num[0]++;break;
case '1':num[1]++;break;
case '2':num[2]++;break;
case '3':num[3]++;break;
case '4':num[4]++;break;
case '5':num[5]++;break;
case '6':num[6]++;break;
case '7':num[7]++;break;
case '8':num[8]++;break;
case '9':num[9]++;break;
}
}
sign_count = p+m;
num_count = N-sign_count;
for(i=0;i<10;i++){
num2[i]=num[i];
}
for(i=0;i<sign_count;i++){
for(j=0;j<10;j++){
if(num[j]!=0){
big[big_num]=j;
num[j]--;
big_num++;
break;
}
}
}
for(i=0;i<num_count-sign_count;i++){
for(j=9;j>=0;j--){
if(num[j]!=0){
big[big_num]=big[big_num]*10+j;
num[j]--;
break;
}
}
}
for(i=0;i<sign_count;i++){
for(j=9;j>=0;j--){
if(num2[j]!=0){
little[little_num]=j;
num2[j]--;
little_num++;
break;
}
}
}
for(i=0;i<num_count-sign_count;i++){
for(j=0;j<10;j++){
if(num2[j]!=0){
little[little_num]=little[little_num]*10+j;
num2[j]--;
break;
}
}
}
max = big[big_num];
for(i=1;i<=p;i++){
max+=big[big_num-i];
}
for(i=1;i<=m;i++){
max -= big[i-1];
}
if(m>0){
for(i=0;i<=p;i++){
min += big[i];
}
for(j=0;j<m;j++){
min -= big[i+j];
}
}
else{
for(i = 0;i<=p;i++){
min += little[i];
}
}
printf("%d %d\n",max,min);
return 0;
}