알고리즘/C++
경비원_백준2564
hyundo0921
2023. 8. 17. 17:43
https://www.acmicpc.net/problem/2564
2564번: 경비원
첫째 줄에 블록의 가로의 길이와 세로의 길이가 차례로 주어진다. 둘째 줄에 상점의 개수가 주어진다. 블록의 가로의 길이와 세로의 길이, 상점의 개수는 모두 100이하의 자연수이다. 이어 한 줄
www.acmicpc.net
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int p1[102];
int p2[102];
int p3[102];
int main()
{
int n, x, y;
int sum = 0;
scanf("%d%d", &x,&y);
int r = x*2 + y*2;
scanf("%d", &n);
for (int i = 0; i <= n; i++) {
scanf("%d%d", &p1[i], &p2[i]);
}
for (int i = 0; i <= n; i++) {
if (p1[i] == 1) p3[i] += p2[i];
else if (p1[i] == 2) p3[i] += (r / 2 + (x - p2[i]));
else if (p1[i] == 3) p3[i] += (r - p2[i]);
else if (p1[i] == 4) p3[i] += (x + p2[i]);
}
int l;
for (int i = 0; i < n; i++) {
if (p3[i] > p3[n]) l = p3[i] - p3[n];
else l = p3[n] - p3[i];
if (l > r / 2) l = r - l;
sum += l;
}
printf("%d", sum);
return 0;
}