公式
A - 駐車場の整理 / Parking Lot Organization 解説
by
A - 駐車場の整理 / Parking Lot Organization 解説
by
MtSaka
初心者の方へ
- AtCoder をはじめたばかりで何をしたらよいか分からない方は、まずは practice contest の問題A「Welcome to AtCoder」を解いてみてください。基本的な入出力の方法が載っています。
- また、プログラミングコンテストの問題に慣れていない方は、AtCoder Beginners Selection の問題をいくつか解いてみることをおすすめします。
- C++入門 AtCoder Programming Guide for beginners (APG4b) は、競技プログラミングのための C++ 入門用コンテンツです。
- Python入門 AtCoder Programming Guide for beginners (APG4bPython) は、競技プログラミングのための Python 入門用コンテンツです。
各車について、座標が \(0\) 未満のときは 座標 \(0\) に移動させ、座標が \(M\) より大きいときは座標 \(M\) に移動させることで最小コストになります。それ以外の座標が \(0\) 以上 \(M\) 以下の時はそのまま移動させないままでよいです。
そのため、各 \(A_i\) についてそれが \(0\) 未満か \(M\) より大きいかを判定し、前者の場合は \(-A_i\) 、後者では \(A_i-M\) を答えの最小コストに加算します。
実装では、答えが32bit整数型ではオーバーフローすることがあることに気を付けてください。
実装例(C++)
#include <bits/stdc++.h>
using namespace std;
int main() {
int n, m;
cin >> n >> m;
vector<int> a(n);
for (auto& e : a) cin >> e;
long long ans = 0;
for (auto e : a) {
if (e < 0) ans += abs(e);
if (e > m) ans += (e - m);
}
cout << ans << endl;
}
