#include <stdio.h>
int dot[3][2];
double ruler(double len);
int main(void)
{
int i, length;
double result;
scanf(" %d", &length); //줄자의 길이 입력
for(i=0; i<3; i++) //점의 위치 입력
scanf(" %d %d", &dot[i][0], &dot[i][1]);
result=ruler((double)length);
printf("%.1f", result);
return 0;
}
double ruler(double len)
{
int i, j, k;
double mid;
for(i=0; i<3; i++)
{
if(dot[i][0]!=dot[i][1]) //점이 겹치지 않울 때
{
mid=(double)(dot[i][0]+dot[i][1])/2.0; //점이 겹쳐지는 중점 위치
if(mid<(len-mid)) //중점을 기준으로 왼쪽보다 오른쪽이 더 길 때
{
for(j=i+1; j<3; j++) //중점을 기준으로 줄자를 접고, 시작 위치는 0으로
{
for(k=0; k<2; k++)
{
if(dot[j][k]>mid) //중점보다 오른쪽에 있거나 같은 점
dot[j][k]=len-dot[j][k];
else //중점보다 왼쪽에 있는 점
dot[j][k]+=len-(mid*2);
}
}
len-=mid; //중점을 기준으로 접은 후 줄자의 길이
}
else //중점을 기준으로 오른쪽보다 왼쪽이 더 길 때
{
for(j=i+1; j<3; j++) //중점을 기준으로 줄자 접기
{
for(k=0; k<2; k++)
{
if(dot[j][k]>mid)//중점보다 오른쪽에 있는 점
dot[j][k]=mid-(dot[j][k]-mid);
//중점보다 왼쪽에 있는 점은 이동할 필요가 없다
}
}
len=mid; //중점을 기준으로 접은 후 줄자의 길이
}
}
}
return len;
}
2018.01.06 11:07
정올 - 실력키우기 - 줄자접기(1112)
조회 수 409 추천 수 0 댓글 0