結果
| 問題 |
No.837 Noelちゃんと星々2
|
| コンテスト | |
| ユーザー |
graythunder1
|
| 提出日時 | 2019-06-26 16:09:02 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
AC
|
| 実行時間 | 45 ms / 2,000 ms |
| コード長 | 776 bytes |
| コンパイル時間 | 1,013 ms |
| コンパイル使用メモリ | 69,080 KB |
| 実行使用メモリ | 5,376 KB |
| 最終ジャッジ日時 | 2024-06-11 14:25:42 |
| 合計ジャッジ時間 | 2,201 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 29 |
ソースコード
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <vector>
#include <map>
#include <functional>
using namespace std;
typedef long long int ll;
#define repi(i,a,b) for(ll i=a;i<b;i++)
#define rep(i,a) repi(i,0,a)
#define rrep(i,a) for(ll i=a-1;i>=0;i--)
int main(){
ll N;
cin >> N;
ll Y[N];
rep(i, N) cin >> Y[i];
sort(Y, Y+N);
if(Y[0] == Y[N-1]){
cout << 1 << endl;
}
else{
ll border = 1;
ll cent1 = 0, cent2 = N / 2;
ll sum = 0;
repi(i, 1, N) sum += abs(Y[i] - Y[cent2]);
ll ans = sum;
while((++border) < N){
if(border % 2) cent1++;
if((N - border) % 2) cent2++;
sum += Y[border-1] * 2 - Y[cent1] - Y[cent2];
if(sum < ans) ans = sum;
}
cout << ans << endl;
}
return 0;
}
graythunder1