- λ¬Έμ
μνμ°¬ κ΅μλμ μκ³ λ¦¬μ¦ λΆμ κΈ°λ§κ³ μ¬λ₯Ό μ€λΉνλ €κ³ νλ€.
μκ³ λ¦¬μ¦ κΈ°λ§κ³ μ¬λ μ΄ MλΆ λμ μ¬λ μκ° μμ΄ λ³Ό μμ μ΄λ©°, μΈμμ΄ λ무 λ§μμ 곡νκ΄ C040νΈμμ λ§κ³ λ€λ₯Έ κ°μμ€μμ μνμ μΉλ₯Ό μ μκ² λμλ€.
곡νκ΄ C040νΈλ 0λΆλΆν° SλΆκΉμ§ μ¬μ© κ°λ₯νλ€. Sλ 무쑰건 M μ΄μμ΄κΈ° λλ¬Έμ μ κ΅μλμ λ³λ¬Έμ μμ΄ μνμ μΉλ₯Ό κ²μΌλ‘ μκ°νμλ€. κ·Έλ¬λ 곡νκ³Ό C040νΈμλ λ€λ₯Έ μνλ μμ λμ΄ μμ΄μ κ²ΉμΉμ§ μλ μκ°μ μ‘μμΌ νλ€.
κ° μνμ xiλΆμ μμν΄μ yiλΆ λμ μ§ννλ©° μλ‘ κ²ΉμΉμ§ μλλ€. ν μνμ΄ λλ μ§ν λ€μ μνμ΄ μλ κ²½μ°λ κ²ΉμΉμ§ μλ κ²μΌλ‘ νλ¨νλ€. μ¦, xi + yi ≤ xj μΌ λ i μνκ³Ό j μνμ μλ‘ κ²ΉμΉμ§ μλλ€.
μνμ°¬ κ΅μλμ΄ μνμ μΈμ μΉλ₯Ό μ μλμ§ κ΅¬ν΄λ³΄μ.
- μ½λ
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int availTime(vector<vector<int>>& arr, int n, int m, int s) {
int t = -1;
if (arr[0][0] != 0 && m <= arr[0][0]) {
return 0;
}
for (int i = 0; i < n; i++) {
if (i == n - 1) {
if ((arr[n - 1][1] + m) <= s) {
t = arr[n - 1][1];
}
break;
}
if (arr[i + 1][0] >= (arr[i][1] + m)) {
t = arr[i][1];
break;
}
}
return t;
}
int main()
{
int n, m, s;
int x, y;
//μ
λ ₯
cin >> n >> m >> s;
vector<vector<int>>arr(n, vector<int>(2, 0));
for(int i = 0; i < n; i++) {
//μν μκ° μ
λ ₯
cin >> x >> y;
arr[i][0] = x;
arr[i][1] = x + y;
}
//xμμΌλ‘ μ λ ¬
sort(arr.begin(), arr.end());
//μ°μ°
cout << availTime(arr, n, m, s);
}
- ν΄μ€
1. availTime(vector<vector<int>>& arr, int n, int m, int s)
- μν κ°λ₯ν μκ°μ μ°μ°νλ ν¨μ
: μν κ°λ₯ν μκ°μ νννλ λ³μ tλ₯Ό -1λ‘ μ΄κΈ°ν
: λ§μ½ x1μ΄ 0μ΄ μλκ³ x1μ΄ μν 보λ μκ°μΈ mλ³΄λ€ ν¬κ±°λ κ°λ€λ©΄, μ¦ μ΄λ°μ μκ°μ΄ λΉλ€λ©΄ 0μ return
: μ€κ°μ μκ°μ΄ λΉλ κ²½μ°, forλ¬Έμ ν΅ν΄ n λ²μ μ°μ°μ λ°λ³΅
: λ§μ½ iκ° n-1μ΄λΌλ©΄ n-1λ²μ§Έμ ν΄λΉνλ μνμ λλλ μκ°μ mμ λν κ²μ΄ μνμ₯μ μ΅μ’ μ μΌλ‘ μΈ μ μλ μκ°μΈ sλ³΄λ€ μκ±°λ κ°λ€λ©΄, μ¦ λ§¨ νλ°μ μκ°μ΄ λΉλ€λ©΄ n-1λ²μ§Έμ ν΄λΉνλ μνμ λλλ μκ°μ return
: λ§μ½ κ·Έκ²μ΄ μλλΌλ©΄ iλ²μ§Έμ ν΄λΉνλ μνμ λλλ μκ°μ mμ λν κ²μ΄ i+1λ²μ§Έμ ν΄λΉνλ μνμ μμ μκ°λ³΄λ€ μκ±°λ κ°λ€λ©΄ iλ²μ§Έμ ν΄λΉνλ μνμ λλλ μκ°μ return
2. main ν¨μ
: n, m, sλ₯Ό κ°κ° μ λ ₯ λ°μ
: κ° μνμ μμ μκ°κ³Ό λλλ μκ°μ μ μ₯ν 2μ°¨μ λ²‘ν° arr μ μΈ
: forλ¬Έμ ν΅ν΄ x,yλ₯Ό μ λ ₯ λ°κ³ arr[i][0]μλ x, arr[i][1]μλ x+yλ₯Ό λμ ν΄ μνμ μμμκ°κ³Ό λλλ μκ°μ μ μ₯
: sortν¨μλ₯Ό ν΅ν΄ arr[i][0]μ κΈ°μ€μΌλ‘ arrμ μμλ₯Ό μ λ ¬
: availTime ν¨μλ₯Ό ν΅ν΄ tλ₯Ό μ°μ°νμ¬ μΆλ ₯