ABC156 C - Rally
問題はこちら
atcoder.jp
指針
スマートな方法が思いつかなかったのでローラー作戦。 なのでそれでも問題なさそう。
問題文通りに整数 と配列 を宣言して, の最小の要素から最大の要素までの範囲で を動かし,求める最小値を出しました。
コード
#include <bits/stdc++.h> using namespace std; int main(){ int n; cin>>n; vector<int> x(n); for(int i=0; i<n; i++){ cin>>x.at(i); } int sum=0,sum_min=0; sort(x.begin(),x.end()); for(int i=x.at(0); i<x.at(n-1)+1; i++){ for(int j=0; j<n; j++){ sum+=(x.at(j)-i)*(x.at(j)-i); } if(sum_min==0 || sum<sum_min){ sum_min=sum; } sum=0; } cout<<sum_min<<endl; }
反省など
とりあえずあまりに愚直なやり方でしっくりこないので,強い人のコードを見てみようと思います。
気づいたことなどがあればまた書きます。