結果
問題 | No.837 Noelちゃんと星々2 |
ユーザー | totori_nyaa |
提出日時 | 2019-06-14 21:59:45 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 20 ms / 2,000 ms |
コード長 | 930 bytes |
コンパイル時間 | 1,440 ms |
コンパイル使用メモリ | 171,184 KB |
実行使用メモリ | 5,376 KB |
最終ジャッジ日時 | 2024-06-11 14:15:36 |
合計ジャッジ時間 | 2,685 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 29 |
ソースコード
#include<bits/stdc++.h> using namespace std; typedef long long ll; int main(){ ios::sync_with_stdio(false); cin.tie(0); ll n; cin>>n; ll y[n]; ll m = 0; bool same = true; int k; for(int i=0;i<n;i++){ cin>>y[i]; m = min(m,y[i]); if(!i) k=y[i]; else if(k!=y[i]) same = false; } if(same){ cout<<1<<endl; return 0; } sort(y,y+n); ll ans = 1e18; ll sum[n+1]={}; for(int i=0;i<n;i++){ y[i] -= m; sum[i+1] = sum[i] + y[i]; } for(int i=0;i<n;i++){ ll ret = 0; ll d = (i+0)/2; ll u = (n+i)/2; ret += y[d]*d - sum[d] + sum[i]-sum[d] - y[d]*(i-d); //cerr<<i<<" "<<ret<<endl; ret += y[u]*(u-i) - sum[u]+sum[i] + sum[n]-sum[u] - y[u]*(n-u); ans = min(ret,ans); //cerr << i <<" "<<d<<" "<<u<<" "<<ret<<endl; } cout << ans << endl; }