vector<long long>型やvector<double>型の配列 x の総和を求めるときに,
std::accumulate(x.begin(), x.end(), 0);
とすると誤差がおおきくなったり,オーバーフローしたりする。std::accumulateの仕様として第三引数の型で値が帰ってくるらしい。なので正しくはそれぞれ
std::accumulate(x.begin(), x.end(), 0LL);
std::accumulate(x.begin(), x.end(), 0.0L);
とする。一応数値の型指定のまとめしておく:
0 //int
0.0 //float
0LL //int64_t
0.0L //double
(メモ) std::cout よりも printf のほうが便利で早いこともあるっぽい,桁数固定など