結果

問題 No.370 道路の掃除
ユーザー hotpepsi
提出日時 2016-05-17 00:19:12
言語 C++11(廃止可能性あり)
(gcc 13.3.0)
結果
WA  
実行時間 -
コード長 642 bytes
コンパイル時間 986 ms
コンパイル使用メモリ 65,832 KB
実行使用メモリ 6,824 KB
最終ジャッジ日時 2024-10-06 04:59:15
合計ジャッジ時間 1,525 ms
ジャッジサーバーID
(参考情報)
judge3 / judge4
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 26 WA * 8
権限があれば一括ダウンロードができます

ソースコード

diff #

#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;

int main(int argc, char *argv[]) {
	int N, M;
	cin >> N >> M;
	vector<int> a, b;
	for (int i = 0; i < M; ++i) {
		int d;
		cin >> d;
		(d < 0 ? a : b).push_back(abs(d));
	}
	sort(a.begin(), a.end());
	sort(b.begin(), b.end());
	int ans = 1 << 30;
	if (a.size() >= N) {
		ans = min(ans, a[N - 1]);
	}
	if (b.size() >= N) {
		ans = min(ans, b[N - 1]);
	}
	for (int i = 1; i < min((int)a.size(), N); ++i) {
		if ((i + b.size()) >= N) {
			int p = a[i - 1], q = b[N - 1 - i];
			ans = min(ans, min(p, q) * 2 + max(p, q));
		}
	}
	cout << ans << endl;
	return 0;
}
0