알고리즘/그리디

백준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;
}