https://www.acmicpc.net/problem/2798
#include
#include
#include
using namespace std;
int main ()
{
vector deck; // 카드 덱을 저장할 벡터
int N, M, temp; // N = 카드의 개수, M = 카드의 합
int i, j, k; // 반복 인수
int sum=0, top=-1; // sum = 일시적인 카드의 합, top = 여태까지 최고의 합
// 입력을 받는다.
cin >> N >> M;
deck.reserve(N);
for (i=0; i < N; i++)
{
cin >> temp;
deck.push_back(temp);
}
// bruteforce search
for (i=0; i<=deck.size()-3; i++)
for (j=i+1; j<=deck.size()-2; j++)
for (k=j+1; k<=deck.size()-1; k++)
{
sum = deck[i] + deck[j] + deck[k];
if (sum <= M && top<sum) top = sum;
// 만약 M값이 나오면 서칭을 그만둔다.
if (top == M) {cout << M << endl; return 0;}
}
cout << top << endl;
}
'Coding > PS' 카테고리의 다른 글
덩치 (0) | 2019.07.06 |
---|---|
분해합 (0) | 2019.07.05 |
계단 오르기 (0) | 2019.06.18 |
그대로 출력하기 (0) | 2019.06.09 |
열 개씩 끊어 출력하기 (0) | 2019.06.08 |