728x90
반응형
https://www.acmicpc.net/problem/22945
22945번: 팀 빌딩
능력치가 다 다른 개발자 $N$명이 팀 빌딩을 위해 한 줄로 서있다. 하나의 팀을 만들기 위해서는 개발자 2명이 반드시 모여야 한다. 개발자 A와 개발자 B가 팀을 만들 때 팀의 능력치는 아래와 같
www.acmicpc.net
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
int n;
cin >> n;
vector<int> v;
for(int i = 0; i < n; i++){
int x;
cin >> x;
v.push_back(x);
}
int l = 0;
int r = v.size() - 1;
int max = 0;
while(l < r){
int a = (r - l - 1) * min(v[l], v[r]);
if(a > max) max = a;
if(v[l] < v[r]) l++;
else r--;
}
cout << max << endl;
return 0;
}
구간이 줄어들 때 A와 B 사이의 개발자 수는 무조건 줄게 되므로 l, r 포인터를 이동시킬 때 팀 능력치를 최대로 할 수 있도록 이동시켜야 한다. 현재 l, r 포인터 중 더 작은 것을 가리키고 있는 포인터를 이동시키면 팀 능력치의 손실을 줄일 수 있다.
728x90
반응형
'Algorithm > BAEKJOON' 카테고리의 다른 글
[BOJ] 21940번 가운데에서 만나기 (C++) (0) | 2022.05.22 |
---|---|
[BOJ] 10026번 적록색약 (C++) (0) | 2022.05.19 |
[BOJ] 2467번 용액 (C++) (0) | 2022.05.17 |
[BOJ] 11055번 가장 큰 증가 부분 수열 (C++) (0) | 2022.05.16 |
[BOJ] 11053번 가장 긴 증가하는 부분 수열 (C++) (0) | 2022.05.16 |