#include <stdio.h>
int x[100]={0}, y[100]={0}; //x:가로 점선 y:세로 점선
int x_c=0, y_c=0; //가로 점선 개수, 세로 점선 개수
int line(void); //오름차순 정렬
int x_max(int n); //가로길이 최대
int y_max(int m); //세로길이 최대
int main(void)
{
int n, m, l, i, a;
scanf(" %d %d", &n, &m); //가로, 세로 길이
scanf(" %d", &l); //점선의 개수
for(i=0; i<l; i++)
{
scanf(" %d", &a);
if(a==0) //가로 점선
{
scanf(" %d", &x[x_c++]);
}
else //세로 점선
{
scanf(" %d", &y[y_c++]);
}
}
line();
printf("%d", x_max(n)*y_max(m));
return 0;
}
int line(void)
{
int i, j, temp, min;
for(i=0; i<(x_c-1); i++)
{
min=i;
for(j=i+1; j<x_c; j++)
{
if(x[min]>x[j])
min=j;
}
if(min!=i)
{
temp=x[i];
x[i]=x[min];
x[min]=temp;
}
}
for(i=0; i<(y_c-1); i++)
{
min=i;
for(j=i+1; j<y_c; j++)
{
if(y[min]>y[j])
min=j;
}
if(min!=i)
{
temp=y[i];
y[i]=y[min];
y[min]=temp;
}
}
}
int x_max(int n)
{
if(y_c==0) //세로 점선이 없을 경우
return n;
int i, max=0, a;
for(i=0; i<=y_c; i++)
{
if(i==0)
a=y[i];
else if(i==y_c)
a=n-y[i-1];
else
a=y[i]-y[i-1];
if(max<a)
max=a;
}
return max;
}
int y_max(int m)
{
if(x_c==0) //가로 점선이 없을 경우
return m;
int i, max=0, a;
for(i=0; i<=x_c; i++)
{
if(i==0)
a=x[i];
else if(i==x_c)
a=m-x[i-1];
else
a=x[i]-x[i-1];
if(max<a)
max=a;
}
return max;
}
2018.06.23 12:09
정올 - 문제은행 - 종이 자르기(1067)
조회 수 283 추천 수 0 댓글 0