読者です 読者をやめる 読者になる 読者になる

srupのメモ帳

競プロで解いた問題や勉強したことを記録していくメモ帳

ARC 059 C - いっしょ / Be Together

arc 全探索

問題

問題概要

省略

解法

はじめは、中央値や平均値などを求めて、その値の前後の値を調べようかと思った。しかし、aの値は-100 <= a <= 100であるので、求める解もこの範囲にあることがわかる。数が少ないので、201個全部調べれば答えが出る。

ミス

なし

コード

#include <iostream>
#include <vector>
#include <cstdio>
#include <cmath>
typedef long long ll;
using namespace std;
#define rep(i,n) for(int i=0;i<(n);i++)

int main(void){
    int n; cin >> n;
    vector<int> v(n);
    rep(i, n) cin >> v[i];
    ll sum = 1e9;
    for (int i = -100; i <= 100 ; ++i){
        ll tmp = 0;
        rep(j, n){
            tmp += pow((i - v[j]), 2);
        }
        sum = min(tmp, sum);
    }
    cout << sum << endl;
    return 0;
}