体積の最小値の求め方

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
yuyuyuxa

体積の最小値の求め方

#1

投稿記事 by yuyuyuxa » 4年前

初めまして.質問を失礼します.
https://paiza.jp/poh/ando/challenge/500327f0/ando12
自分の考えた手順は,x,yを各配列に分ける→各配列をソートする→間隔を計算し配列に入れる→
同数を削除する→最小値を検索する→最小値とzを計算する.なのですが
こちらのソースで下記のコードを動作させると
3回目で成功が止まってしまいます.
自分の考えた手順は,x,yを各配列に分ける→各配列をソートする→間隔を計算し配列に入れる→
同数を削除する→最小値を検索する→最小値とzを計算する.
利用規約上答えにくいと思うのですがお力を貸していただけないでしょうか?

コード:

#include <stdio.h>

int main(void){
	int x,y,z,n,xc,yc,num_x,num_y,min_x,min_y,sub_x,sub_y;
	int d_[100],a_[100],xl_[100],yl_[100];
	scanf("%d %d %d %d",&x,&y,&z,&n);
	xc=0;yc=0;num_x=0;num_y=0;
	
	//入力かつ仕分け
	for(int i = 0;i<n;i++){
		scanf("%d %d",&d_[i],&a_[i]);
		if(d_[i]==0){
			xl_[num_x]=a_[i];
			xc++;
			num_x++;
		}else{
			yl_[num_y]=a_[i];
			yc++;
			num_y++;
		}
	}
	xc++;yc++;
	xl_[xc]=x;
	yl_[yc]=y;
	num_x=xc;
	num_y=yc;
	
	//順番揃え
	for(int i=0;i<xc;i++){
		for(int j=1;j<xc;j++){
			if(xl_[i]>xl_[j]){
				sub_x=xl_[i];
				xl_[i]=xl_[j];
				xl_[j]=sub_x;
			}
		}
	}
	for(int i=0;i<yc;i++){
		for(int j=0;j<yc;j++){
			if(yl_[i]>yl_[j]){
				sub_y=yl_[i];
				yl_[i]=yl_[j];
				yl_[j]=sub_y;
			}
		}
	}
	

	//差計算
	for(int i = xc;i>0;i--){
		xc++;
		xl_[xc]=xl_[i]-xl_[i-1];
	}
	for(int i = yc;i>0;i--){
		yc++;
		yl_[yc]=yl_[i]-yl_[i-1];
	}
	
	
	//同数削除
	for(int i = 0;i<xc;i++){
		if(xl_[i]==xl_[i+1]){
			for(int j = i+1;j<xc;j++){
				xl_[j]=xl_[j+1];
			}
		}
		
	}
	for(int i = 0;i<yc;i++){
		if(yl_[i]==yl_[i+1]){
			for(int j = i+1;j<yc;j++){
				yl_[j]=yl_[j+1];
			}
		}
		
	}
	//最小値検索
	min_x=xl_[0];
	min_y=yl_[0];
	for(int i = num_x+1;i<=xc;i++){
		if(min_x>xl_[i]){
			min_x=xl_[i];
		}
	}
	for(int i = num_y+1;i<=yc;i++){
		if(min_y>yl_[i]){
			min_y=yl_[i];
		}
	}
	printf("%d",min_x*min_y*z);
}

“C言語何でも質問掲示板” へ戻る