- 追加された行はこのように表示されます。
- 削除された行は
このように表示されます。
#include <stdio.h>
#include <stdlib.h>
//挿入ソート
void sort(int num[ ], int n)
{
int i, j, temp;
for (i = 1; i < n; i++) {
temp = num[i];
for (j = i; j > 0 && num[j-1] > temp; j--)
num[j] = num[j -1];
num[j] = temp;
}
}
//確認用
void print(int a[])
{
for(int i=0; i<4; i++){
printf("%d ", a[i]);
}
printf("\n");
}
int main(void)
{
int a[4];
while(1){
scanf("%d %d %d %d", &a[0], &a[1], &a[2], &a[3]);
if(a[0]==0 && a[1]==0 && a[2]==0 && a[3]==0){
break;
}
print(a);
while(1){
//ソート
sort(a, 4);
print(a);
//最小値と場所を見つける
//ソートしたら1個目の椀が最小値かと思ったら、
//0になるので、最初に0以外になる場所を探す必要がある
int min=101, min_no;
for(int i=0; i<4; i++){
if(a[i]>0){
min=a[i];
min_no=i;
break;
}
}
//0以外の腕の数を数える
int count=0;
for(int i=0; i<4; i++){
if(a[i]>0){
count++;
}
}
printf("min=%d min_no=%d count=%d\n", min, min_no, count);
//0以外の腕の数が1だったらループ終了
if(count==1){
printf("%d\n", min);
break;
}else{
//最小値の場所以降から最小値を引く
for(int i=min_no+1; i<4; i++){
a[i]-=min;
}
}
print(a);
}
printf("\n");
}
return(0);
}