https://www.acmicpc.net/problem/18111
λ¬Έμ
ν λ λμννΈλ λν μ€λΉλ₯Ό νλ€κ° μ§λ£¨ν΄μ Έμ μλλ°μ€ κ²μμΈ ‘λ§μΈν¬λννΈ’λ₯Ό μΌ°λ€. λ§μΈν¬λννΈλ 1 × 1 × 1(μΈλ‘, κ°λ‘, λμ΄) ν¬κΈ°μ λΈλ‘λ€λ‘ μ΄λ£¨μ΄μ§ 3μ°¨μ μΈκ³μμ μμ λ‘κ² λ μ νκ±°λ μ§μ μ§μ μ μλ κ²μμ΄λ€.
λͺ©μ¬λ₯Ό μΆ©λΆν λͺ¨μ lvalueλ μ§μ μ§κΈ°λ‘ νμλ€. νμ§λ§ κ³ λ₯΄μ§ μμ λ μλ μ§μ μ§μ μ μκΈ° λλ¬Έμ λ μ λμ΄λ₯Ό λͺ¨λ λμΌνκ² λ§λλ ‘λ κ³ λ₯΄κΈ°’ μμ μ ν΄μΌ νλ€.
lvalueλ μΈλ‘ N, κ°λ‘ M ν¬κΈ°μ μ§ν°λ₯Ό 골λλ€. μ§ν° 맨 μΌμͺ½ μμ μ’νλ (0, 0)μ΄λ€. μ°λ¦¬μ λͺ©μ μ μ΄ μ§ν° λ΄μ λ μ λμ΄λ₯Ό μΌμ νκ² λ°κΎΈλ κ²μ΄λ€. μ°λ¦¬λ λ€μκ³Ό κ°μ λ μ’ λ₯μ μμ μ ν μ μλ€.
- μ’ν (i, j)μ κ°μ₯ μμ μλ λΈλ‘μ μ κ±°νμ¬ μΈλ²€ν 리μ λ£λλ€.
- μΈλ²€ν 리μμ λΈλ‘ νλλ₯Ό κΊΌλ΄μ΄ μ’ν (i, j)μ κ°μ₯ μμ μλ λΈλ‘ μμ λλλ€.
1λ² μμ μ 2μ΄κ° 걸리며, 2λ² μμ μ 1μ΄κ° κ±Έλ¦°λ€. λ°€μλ 무μμ΄ λͺ¬μ€ν°λ€μ΄ λμ€κΈ° λλ¬Έμ μ΅λν 빨리 λ κ³ λ₯΄κΈ° μμ μ λ§μ³μΌ νλ€. ‘λ κ³ λ₯΄κΈ°’ μμ μ 걸리λ μ΅μ μκ°κ³Ό κ·Έ κ²½μ° λ μ λμ΄λ₯Ό μΆλ ₯νμμ€.
λ¨, μ§ν° μλμ λκ΅΄ λ± λΉ κ³΅κ°μ μ‘΄μ¬νμ§ μμΌλ©°, μ§ν° λ°κΉ₯μμ λΈλ‘μ κ°μ Έμ¬ μ μλ€. λν, μμ μ μμν λ μΈλ²€ν 리μλ Bκ°μ λΈλ‘μ΄ λ€μ΄ μλ€. λ μ λμ΄λ 256λΈλ‘μ μ΄κ³Όν μ μμΌλ©°, μμκ° λ μ μλ€.
μ λ ₯
첫째 μ€μ N, M, Bκ° μ£Όμ΄μ§λ€. (1 ≤ M, N ≤ 500, 0 ≤ B ≤ 6.4 × 107)
λμ§Έ μ€λΆν° Nκ°μ μ€μ κ°κ° Mκ°μ μ μλ‘ λ μ λμ΄κ° μ£Όμ΄μ§λ€. (i + 2)λ²μ§Έ μ€μ (j + 1)λ²μ§Έ μλ μ’ν (i, j)μμμ λ μ λμ΄λ₯Ό λνλΈλ€. λ μ λμ΄λ 256λ³΄λ€ μκ±°λ κ°μ μμ°μ λλ 0μ΄λ€.
μΆλ ₯
첫째 μ€μ λ μ κ³ λ₯΄λ λ° κ±Έλ¦¬λ μκ°κ³Ό λ μ λμ΄λ₯Ό μΆλ ₯νμμ€. λ΅μ΄ μ¬λ¬ κ° μλ€λ©΄ κ·Έμ€μμ λ μ λμ΄κ° κ°μ₯ λμ κ²μ μΆλ ₯νμμ€.
νμ΄
λͺ¨λ κ²½μ°μ μλ₯Ό λ€ λμλ μκ° κ·Έλ¦¬ ν¬μ§ μμΌλ―λ‘ λΈλ£¨νΈν¬μ€ λͺ¨λ λμ΄μ κ²½μ°λ₯Ό μ‘°μ¬ν΄λ³Έλ€
// Authored by : seondal
// Co-authored by : -
// #include <bits/stdc++.h>
#include <iostream>
#include <vector>
using namespace std;
typedef pair<int,int> ci;
const int INF = 150000000; // 500*500*256*2 = 128000000
ci solution(int n, int m, int b, vector<vector<int>>&land) {
ci ans = {INF, 0}; // λ΅ μ = { 걸리λ μ΅μμκ°, λ
λμ΄ }
for(int height=0; height<=256; height++) {
int inventory=b, required_time=0;
for(int i=0; i<n; i++){
for(int j=0; j<m; j++){
int diff = land[i][j] - height;
if(diff>0) {
// μμμΌκ²½μ°: λΈλμ μ κ±°νμ¬ μΈλ²€ν 리μ λ£λλ€ (2μ΄)
required_time += 2*diff;
} else {
// μμμΌκ²½μ°: λΈλμ κΊΌλ΄μ μμ λλλ€ (1μ΄)
required_time += 1*-diff;
}
inventory += diff;
}
}
if(inventory>=0 && ans.first>=required_time) {
ans = {required_time, height};
}
}
return ans;
}
int main() {
ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
int n, m, b;
cin >> n >> m >> b;
vector<vector<int>> land (n, vector<int>(m,0));
for(int i=0; i<n; i++)
for(int j=0; j<m; j++)
cin >> land[i][j];
ci ans = solution(n, m, b, land);
cout << ans.first << " " << ans.second;
return 0;
}
/*
*/
'ποΈ ICPC Sinchon > Simulation' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[BOJ S2][C++] λ°±μ€ 3085λ²: μ¬ν κ²μ (0) | 2022.11.07 |
---|---|
[BOJ S4][C++] λ°±μ€ 1244λ²: μ€μμΉ μΌκ³ λκΈ° (0) | 2022.10.17 |
[BOJ S3][C++] λ°±μ€ 2503λ²: μ«μ μΌκ΅¬ (2%, 4%) (0) | 2022.10.06 |
[BOJ G5][C++] λ°±μ€ 20055λ²: μ»¨λ² μ΄μ΄ λ²¨νΈ μμ λ‘λ΄ (0) | 2022.10.03 |
[BOJ S1][C++] λ°±μ€ 20923λ²: μ«μ ν 리κ°λ¦¬ κ²μ (0) | 2022.09.30 |