# Link
https://www.acmicpc.net/problem/10040
10040번: 투표
입출력 예시에서 경기는 4개, 위원은 3명이 있다. 각 경기를 개최하는데 필요한 비용은 5, 3, 1, 4이다. 위원 1의 심사 기준은 4이다. 비용이 4 이하인 경기 중에서 가장 재미있는 경기는 2이다. 위원
www.acmicpc.net
# Code - C++
//
// BOJ
// ver.C++
//
// Created by GGlifer
//
// Open Source
#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
#define endl '\n'
#define len(x) (int)(x).length()
#define size(x) (int)(x).size()
struct Game { int a, f, no; };
// Set up : Global Variables
/* None */
// Set up : Functions Declaration
bool operator < (const Game &u, const Game &v);
int main()
{
// Set up : I/O
ios::sync_with_stdio(false);
cin.tie(nullptr);
// Set up : Input
int N, M;
cin >> N >> M;
int A[N], B[M];
for (int i=0; i<N; i++)
cin >> A[i];
for (int i=0; i<M; i++)
cin >> B[i];
// Process
Game G[N];
for (int i=0; i<N; i++) {
G[i] = {A[i], N-i, i+1};
}
sort(G, G+N);
for (int i=1; i<N; i++) {
if (G[i].f < G[i-1].f) {
G[i].f = G[i-1].f;
G[i].no = G[i-1].no;
}
}
int C[N+1];
memset(C, 0, sizeof(C));
for (int i=0; i<M; i++) {
int b = B[i];
auto pos = upper_bound(G, G+N, Game{b, -1, -1});
if (pos == G) continue;
auto [a, f, no] = *(--pos);
C[no]++;
}
int ans = distance(C, max_element(C, C+(N+1)));
// Control : Output
cout << ans << endl;
}
// Helper Functions
bool operator < (const Game &u, const Game &v)
{
return u.a < v.a;
}
지적, 조언, 첨언 모두 환영합니다!!!
'Problem Solving > 백준' 카테고리의 다른 글
| [ Problem Solving :: 백준 ] 2075 / N번째 큰 수 (0) | 2021.11.12 |
|---|---|
| [ Problem Solving :: 백준 ] 2840 / 행운의 바퀴 (0) | 2021.11.05 |
| [ Problem Solving :: 백준 ] 1647 / 도시 분할 계획 (0) | 2021.11.02 |
| [ Problem Solving :: 백준 ] 2872 / 우리집엔 도서관이 있어 (0) | 2021.11.02 |
| [ Problem Solving :: 백준 ] 1392 / 노래 악보 (0) | 2021.10.30 |