알고리즘/그리디
백준4307 개미
leo_____lee
2019. 1. 31. 20:42
문제
풀이 방법
개미가 움직이는데 가장 많이 걸리는 시간:max(맨 앞의 개미가 맨뒤로 가서죽기, 맨 뒤의 개미가 맨앞으로가서 죽기)
개미가 움직이는데 가장 짧은 시간 : max(가운데랑 가장 가까운 개미가 맨 앞에서 죽기, 가운데랑 가장 가까운 개미가 맨 뒤에서 죽기)
코드
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int r;
int *ry;
int i, j, k;
k = 0;
int l, n;
int *nx;
int m;
int d;
cin >> r;
ry = new int[r * 2]; //정답을 담는다.
for (i = 0; i < r; i++) {
m = 0;
cin >> l; //length
cin >> n; //num
nx = new int[n];
for (j = 0; j < n; j++)
cin >> nx[j];
sort(nx, nx + n);
for (j = 0; j < n; j++) {
if(m<min(nx[j], l - nx[j]))
m = min(nx[j], l - nx[j]);
}
ry[k] = m;
k++;
ry[k] = max(l - nx[0], nx[n - 1]);
k++;
}
i = 0;
while(i<r*2){
cout << ry[i] << " ";
i++;
cout << ry[i]<<endl;
i++;
}
return 0;
}