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);
}