Official
B - 植物の温度管理 / Plant Temperature Management Editorial
by
B - 植物の温度管理 / Plant Temperature Management Editorial
by
physics0523
まず、各部屋について、その部屋を選ぶ場合に増加する電気代を求めます。
- \(T_i < L\) なら、 \(L\) 度まで上げればよいので増加する電気代は \(L-T_i\) 円である。
- \(L \le T_i \le R\) なら、温度を変更する必要がないので増加する電気代は \(0\) 円である。
- \(R < T_i\) なら、 \(R\) 度まで下げればよいので増加する電気代は \(T_i-R\) 円である。
この「増加する電気代」を配列に格納し、昇順(低い方から高い方へ)にソートして、小さい方から \(K\) 部屋を採用することで電気代を最小にすることができます。
実装例 (C++):
#include<bits/stdc++.h>
using namespace std;
using ll=long long;
int main(){
ll n,k,l,r;
cin >> n >> k >> l >> r;
vector<ll> t(n);
for(ll i=0;i<n;i++){
cin >> t[i];
if(t[i]<l){t[i]=l-t[i];}
else if(t[i]>r){t[i]=t[i]-r;}
else{t[i]=0;}
}
sort(t.begin(),t.end());
ll res=0;
for(ll i=0;i<k;i++){ res+=t[i]; }
cout << res << "\n";
return 0;
}
posted:
last update:
