白駿18111号:私の世界
質問する
題ショートカットキー>白駿18111号:私の世界
に答える
問題が読めなかったので,しばらく間違えてやっと正解した.ただすべての場合、最小時間条件を満たす前提で、正確な答えを設定し、地の高さを最高にします.地の高さは0から256とすることができるので、0から256の間で繰り返し行う過程で、以下の2つの条件(
tmp<=time && btmp<=b
)を満たせば、正解を更新することができる.tmp<=time
では、小さい場合ではなく、同じまたは小さい場合であり、最小時間条件下では、土地の最大高さを保証することができる.# include <iostream>
# include <cstdlib>
using namespace std;
int main(){
int n, m, b; cin>>n>>m>>b;
int h[n][m] = {};
int num[257] = {};
for(int i=0; i<n; i++){
for(int j=0; j<m; j++) {
cin>>h[i][j];
num[h[i][j]]++;
}
}
int time=2100000000, height=0;
for(int i=0; i<257; i++){
int tmp=0, btmp=0;
for(int j=0; j<n; j++){
for(int k=0; k<m; k++){
if(i<h[j][k]) {
tmp+=(h[j][k]-i)*2;
btmp-=(h[j][k]-i);
}
else if(i>h[j][k]){
tmp+=(i-h[j][k]);
btmp+=(i-h[j][k]);
}
}
}
if(tmp<=time && btmp<=b){
time = tmp;
height = i;
}
}
cout << time << ' ' << height;
}
Reference
この問題について(白駿18111号:私の世界), 我々は、より多くの情報をここで見つけました https://velog.io/@danbibibi/백준-18111번-마인크래프트テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol