강 건너기 in C++

Purple·2021년 10월 6일
0

문제

  • 배를 타고 강을 건너야 한다.
  • 배에는 단 두명의 사람만이 탈수 있다.
  • n명의 사람들이 주어지고, 각 사람들은 노를 젓는 속도가 다르다.
  • 배의 속도는 노를 늦게 젓는 사람의 속도에 맞춰진다.
  • 모든 사람이 강을 건널때 시간이 얼마나 걸리는지 계산하라.
#include <bits/stdc++.h>
using namespace std;

int n, res = 0;
int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    freopen("input.txt", "rt", stdin);
    cin >> n;
    vector<int> t(n + 1);

    for(int i=1; i<=n; i++) {
        cin >> t[i];
    }
    sort(t.begin(), t.end());
    int res=0, i;
    for (i = n; i >= 4; i -= 2) {
        res += min(t[i] + t[1] + t[i - 1] + t[1], t[2] + t[2] + t[i] + t[1]);
    }
    if (i == 3) res += t[1] + t[2] + t[3];
    if (i == 2) res += t[2];
    if (i == 1) res += t[1];
    cout << res;
    return 0;
}
  • t[i] + t[1] + t[i-1] + t[1]
  • t[2] + t[2] + t[i] + t[1]
  • 위의 두 경우를 비교하여 작은 것을 결과값에 합한다.
    ex)
    4
    1 3 7 10
profile
안녕하세요.

0개의 댓글