日々精進

aikoと旅行とプログラミング

【POJ 1862】Stripies

問題

1862 -- Stripies

方針

  • 入力された値を降順ソートする.
  • 質量m1とm2の物体があった時,  {2*\sqrt{m1 \times m2}}で求められるので, これを先頭から順にやっていく.

コード

#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<ctime>
#include<cctype>
#include<climits>
#include<iostream>
#include<string>
#include<vector>
#include<map>
#include<list>
#include<queue>
#include<deque>
#include<algorithm>
#include<numeric>
#include<utility>
#include<complex>
#include<memory>
#include<functional>

#define rep(i, n) REP(i, 0, n)
#define REP(i, a, n) for(int i = a ; i < (int)n ; i++)
#define ALL(v) v.begin(), v.end()
#define pb push_back

using namespace std;

signed main(){
  int n;
  vector<int> v;
  int in;

  scanf("%d", &n);
  rep(i, n){
    cin >> in;
    v.pb(in);
  }

  sort(ALL(v), greater<int>());
  
  double ans = v[0];
  REP(i, 1, n){
    ans *= v[i];
    ans = 2 * sqrt(ans);
  }

  printf("%.3f\n", ans);
}