Language: C++

#include <algorithm>
#include <array>
#include <cmath>
#include <iomanip>
#include <iostream>
#include <iterator>
#include <list>
#include <map>
#include <numeric>
#include <set>
#include <sstream>
#include <string>
#include <unordered_map>
#include <unordered_set>
#include <utility>
#include <vector>

using namespace std;

namespace io {
// Input
using IS = istream;
IS &in(IS &i) { return i; }
template <class T, class... Ts> IS &in(IS &i, T &a, Ts &... as) {
  return in(i >> a, as...);
}
template <class V> IS &operator>>(IS &i, vector<V> &a) {
  for_each(a.begin(), a.end(), [&i](auto &e) { i >> e; });
  return i;
}
template <class F, class S> IS &operator>>(IS &i, pair<F, S> const &p) {
  return in(p.first, p.second);
}
template <class... Ts, size_t... I>
IS &tuple_in(IS &i, tuple<Ts...> &t, index_sequence<I...>) {
  return in(i, get<I>(t)...);
}
template <class... Ts> IS &operator>>(IS &i, tuple<Ts...> &t) {
  return tuple_in(i, t, make_index_sequence<sizeof...(Ts)>());
}
// Output
using OS = ostream;
OS &out(OS &o) { return o << endl; }
template <class T> OS &out(OS &o, T const &a) { return o << a << endl; }
template <class T, class... Ts> OS &out(OS &o, T const &a, Ts const &... as) {
  return out(o << a << " ", as...);
}
template <class F, class S> OS &operator<<(OS &o, pair<F, S> const &p) {
  return o << p.first << ":" << p.second;
}
template <class... Ts> OS &args_out(OS &o, Ts const &... ts);
OS &args_out(OS &o) { return o; }
template <class T> OS &args_out(OS &o, T const &t) { return o << t; }
template <class T0, class T1, class... Ts>
OS &args_out(OS &o, T0 const &t0, T1 const &t1, Ts const &... ts) {
  return args_out(o << t0 << ",", t1, ts...);
}
template <class... Ts, size_t... I>
OS &tuple_out(OS &o, tuple<Ts...> const &t, index_sequence<I...>) {
  return args_out(o, get<I>(t)...);
}
template <class... Ts> OS &operator<<(OS &o, tuple<Ts...> const &t) {
  return tuple_out(o << "(", t, make_index_sequence<sizeof...(Ts)>()) << ")";
}
template <
    class C,
    class T = typename iterator_traits<typename C::iterator>::value_type,
    typename enable_if<!is_same<C, string>::value, nullptr_t>::type = nullptr>
OS &operator<<(OS &o, C const &a) {
  return a.empty() ? (o << "[]") : ([&o, &a]() -> OS & {
    o << "[" << *a.begin();
    for_each(next(a.begin()), a.end(), [&o](auto const &e) { o << "," << e; });
    return o << "]";
  }());
}
} // namespace io
template <class... Xs> void input(Xs &... xs) { io::in(cin, xs...); }
template <class... Xs> void print(Xs const &... xs) { io::out(cout, xs...); }
#ifdef JUMPAKU_DEBUG
template <class... Xs> void dump(Xs const &... xs) { io::out(cout, xs...); }
#else
template <class... Xs> void dump(Xs const &... xs) {}
#endif

// Hash
namespace hashcode {
template <class... Ts> size_t hash_args(size_t h, Ts const &... ts);
size_t hash_args(size_t h) { return h; }
template <class T, class... Ts>
size_t hash_args(size_t h, T const &t, Ts const &... ts) {
  return hash_args(h * 31 + hash<T>{}(t), ts...);
}
template <class... Ts, size_t... I>
size_t hash_tuple(tuple<Ts...> const &t, index_sequence<I...>) {
  return hash_args(17, get<I>(t)...);
}
} // namespace hashcode
namespace std {
template <class... Ts> struct hash<tuple<Ts...>> {
  size_t operator()(tuple<Ts...> const &t) const {
    return hashcode::hash_tuple(t, index_sequence_for<Ts...>());
  }
};
} // namespace std

// Types
using ll = long long int;
template <class T> using u_set = unordered_set<T>;
template <class K, class V> using u_map = unordered_map<K, V>;

// Range
vector<ll> range(ll const &begin, ll const &end) {
  vector<ll> ret(max(0LL, end - begin));
  iota(ret.begin(), ret.end(), begin);
  return ret;
}
vector<ll> range(ll const &end) { return range(0, end); }
template <class T = ll> vector<T> vec(size_t n, T &&init = T()) {
  return vector<T>(n, init);
}
template <class Itr, class T = typename iterator_traits<Itr>::value_type>
vector<T> vec(Itr begin, Itr end) {
  return vector<T>(begin, end);
}

// MOD
ll gcd(ll p, ll q) { return (q == 0) ? p : gcd(q, p % q); }
ll pow(ll a, ll n, ll m) {
  if (n == 0)
    return 1;
  if (n & 1)
    return ((a % m) * pow(a, n - 1, m)) % m;
  auto b = pow(a, n / 2, m);
  return (b * b) % m;
}
ll inv(ll a, ll p) { return pow(a, p - 2, p); }
constexpr ll MOD = 1e9 + 7;

int main() {
  ll N;
  input(N);
  using XY = tuple<ll, ll>;
  const ll X = 0;
  const ll Y = 1;
  auto ps = vec<XY>(N);
  input(ps);
  auto a = vec(20, XY{0, 0});
  for (auto i : range(N)) {
    auto p = ps[i];
    auto px = get<X>(p);
    auto py = get<Y>(p);
    if (px == 0 && py > 0)
      a[0] = XY{get<X>(a[0]) + px, get<Y>(a[0]) + py};
    if (px >= 0 && py > 0)
      a[1] = XY{get<X>(a[1]) + px, get<Y>(a[1]) + py};
    if (px > 0 && py > 0)
      a[2] = XY{get<X>(a[2]) + px, get<Y>(a[2]) + py};
    if (px > 0 && py >= 0)
      a[3] = XY{get<X>(a[3]) + px, get<Y>(a[3]) + py};
    if (px > 0 && py == 0)
      a[4] = XY{get<X>(a[4]) + px, get<Y>(a[4]) + py};
    if (px > 0 && py <= 0)
      a[5] = XY{get<X>(a[5]) + px, get<Y>(a[5]) + py};
    if (px > 0 && py < 0)
      a[6] = XY{get<X>(a[6]) + px, get<Y>(a[6]) + py};
    if (px >= 0 && py < 0)
      a[7] = XY{get<X>(a[7]) + px, get<Y>(a[7]) + py};
    if (px == 0 && py < 0)
      a[8] = XY{get<X>(a[8]) + px, get<Y>(a[8]) + py};
    if (px <= 0 && py < 0)
      a[9] = XY{get<X>(a[9]) + px, get<Y>(a[9]) + py};
    if (px < 0 && py < 0)
      a[10] = XY{get<X>(a[10]) + px, get<Y>(a[10]) + py};
    if (px < 0 && py <= 0)
      a[11] = XY{get<X>(a[11]) + px, get<Y>(a[11]) + py};
    if (px < 0 && py == 0)
      a[12] = XY{get<X>(a[12]) + px, get<Y>(a[12]) + py};
    if (px < 0 && py >= 0)
      a[13] = XY{get<X>(a[13]) + px, get<Y>(a[13]) + py};
    if (px < 0 && py > 0)
      a[14] = XY{get<X>(a[14]) + px, get<Y>(a[14]) + py};
    if (px <= 0 && py > 0)
      a[15] = XY{get<X>(a[15]) + px, get<Y>(a[15]) + py};
    if (px <= 0 && py <= 0)
      a[16] = XY{get<X>(a[16]) + px, get<Y>(a[16]) + py};
    if (px <= 0 && py >= 0)
      a[17] = XY{get<X>(a[17]) + px, get<Y>(a[17]) + py};
    if (px >= 0 && py <= 0)
      a[18] = XY{get<X>(a[18]) + px, get<Y>(a[18]) + py};
    if (px >= 0 && py >= 0)
      a[19] = XY{get<X>(a[19]) + px, get<Y>(a[19]) + py};
    dump(a);
  }
  auto itr = max_element(a.begin(), a.end(), [X, Y](auto ai, auto aj) {
    return sqrt(get<X>(ai) * get<X>(ai) + get<Y>(ai) * get<Y>(ai)) <
           sqrt(get<X>(aj) * get<X>(aj) + get<Y>(aj) * get<Y>(aj));
  });
  auto ans = *itr;
  auto d = sqrt(get<X>(ans) * get<X>(ans) + get<Y>(ans) * get<Y>(ans));
  printf("%.12lf\n", d);
}


Compiler output:
a.cc: In instantiation of 'io::IS& io::in(IS&, T&, Ts& ...) [with T = std::vector<std::tuple<long long int, long long int>, std::allocator<std::tuple<long long int, long long int> > >; Ts = {}; IS = std::basic_istream<char>]':
a.cc:77:55:   required from 'void input(Xs& ...) [with Xs = {std::vector<std::tuple<long long int, long long int>, std::allocator<std::tuple<long long int, long long int> > >}]'
   77 | template <class... Xs> void input(Xs &... xs) { io::in(cin, xs...); }
      |                                                 ~~~~~~^~~~~~~~~~~~
a.cc:146:8:   required from here
  146 |   input(ps);
      |   ~~~~~^~~~
a.cc:25:15: error: no match for 'operator>>' (operand types are 'io::IS' {aka 'std::basic_istream<char>'} and 'std::vector<std::tuple<long long int, long long int>, std::allocator<std::tuple<long long int, long long int> > >')
   25 |   return in(i >> a, as...);
      |             ~~^~~~
In file included from /usr/include/c++/14/sstream:40,
                 from /usr/include/c++/14/bits/quoted_string.h:38,
                 from /usr/include/c++/14/iomanip:50,
                 from a.cc:4:
/usr/include/c++/14/istream:170:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(bool&) [with _CharT = char; _Traits = std::char_traits<char>; __istream_type = std::basic_istream<char>]'
  170 |       operator>>(bool& __n)
      |       ^~~~~~~~
/usr/include/c++/14/istream:170:24: note:   no known conversion for argument 1 from 'std::vector<std::tuple<long long int, long long int>, std::allocator<std::tuple<long long int, long long int> > >' to 'bool&'
  170 |       operator>>(bool& __n)
      |                  ~~~~~~^~~
/usr/include/c++/14/istream:174:7: note: candidate: 'std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, _Traits>::operator>>(short int&) [with _CharT = char; _Traits = std::char_traits<char>]'
  174 |       operator>>(short& __n);
      |       ^~~~~~~~
/usr/include/c++/14/istream:174:25: note:   no known conversion for argument 1 from 'std::vector<std::tuple<long long int, long long int>, std::allocator<std::tuple<long long int, long long int> > >' to 'short int&'
  174 |       operator>>(short& __n);
      |                  ~~~~~~~^~~
/usr/include/c++/14/istream:177:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(short unsigned int&) [with _CharT = char; _Traits = std::char_traits<char>; __istream_type = std::basic_istream<char>]'
  177 |       operator>>(unsigned short& __n)
      |       ^~~~~~~~
/usr/include/c++/14/istream:177:34: note:   no known conversion for argument 1 from 'std::vector<std::tuple<long long int, long long int>, std::allocator<std::tuple<long long int, long long int> > >' to 'short unsigned int&'
  177 |       operator>>(unsigned short& __n)
      |                  ~~~~~~~~~~~~~~~~^~~
/usr/include/c++/14/istream:181:7: note: candidate: 'std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, _Traits>::operator>>(int&) [with _CharT = char; _Traits = std::char_traits<char>]'
  181 |       operator>>(int& __n);
      |       ^~~~~~~~
/usr/include/c++/14/istream:181:23: note:   no known conversion for argument 1 from 'std::vector<std::tuple<long long int, long long int>, std::allocator<std::tuple<long long int, long long int> > >' to 'int&'
  181 |       operator>>(int& __n);
      |                  ~~~~~^~~
/usr/include/c++/14/istream:184:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(unsigned int&) [with _CharT = char; _Traits = std::char_traits<char>; __istream_type = std::basic_istream<char>]'
  184 |       operator>>(unsigned int& __n)
      |       ^~~~~~~~
/usr/include/c++/14/istream:184:32: note:   no known conversion for argument 1 from 'std::vector<std::tuple<long long int, long long int>, std::allocator<std::tuple<long long int, long long int> > >' to 'unsigned int&'
  184 |       operator>>(unsigned int& __n)
      |                  ~~~~~~~~~~~~~~^~~
/usr/include/c++/14/istream:188:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(long int&) [with _CharT = char; _Traits = std::char_traits<char>; __istream_type = std::basic_istream<char>]'
  188 |       operator>>(long& __n)
      |       ^~~~~~~~
/usr/include/c++/14/istream:188:24: note:   no known conversion for argument 1 from 'std::vector<std::tuple<long long int, long long int>, std::allocator<std::tuple<long long int, long long int> > >' to 'long int&'
  188 |       operator>>(long& __n)
      |                  ~~~~~~^~~
/usr/include/c++/14/istream:192:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(long unsigned int&) [with _CharT = char; _Traits = std::char_traits<char>; __istream_type = std::basic_istream<char>]'
  192 |       operator>>(unsigned long& __n)
      |       ^~~~~~~~
/usr/include/c++/14/istream:192:33: note:   no known conversion for argument 1 from 'std::vector<std::tuple<long long int, long long int>, std::allocator<std::tuple<long long int, long long int> > >' to 'long unsigned int&'
  192 |       operator>>(unsigned long& __n)
      |                  ~~~~~~~~~~~~~~~^~~
/usr/include/c++/14/istream:199:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(long long int&) [with _CharT = char; _Traits = std::char_traits<char>; __istream_type = std::basic_istream<char>]'
  199 |       operator>>(long long& __n)
      |       ^~~~~~~~
/usr/include/c++/14/istream:199:29: note:   no known conversion for argument 1 from 'std::vector<std::tuple<long long int, long long int>, std::allocator<std::tuple<long long int, long long int> > >' to 'long long int&'
  199 |       operator>>(long long& __n)
      |                  ~~~~~~~~~~~^~~
/usr/include/c++/14/istream:203:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(long long unsigned int&) [with _CharT = char; _Traits = std::char_traits<char>; __istream_type = std::basic_istream<char>]'
  203 |       operator>>(unsigned long long& __n)
      |       ^~~~~~~~
/usr/include/c++/14/istream:203:38: note:   no known conversion for argument 1 from 'std::vector<std::tuple<long long int, long long int>, std::allocator<std::tuple<long long int, long long int> > >' to 'long long unsigned int&'
  203 |       operator>>(unsigned long long& __n)
      |                  ~~~~~~~~~~~~~~~~~~~~^~~
/usr/include/c++/14/istream:219:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(float&) [with _CharT = char; _Traits = std::char_traits<char>; __istream_type = std::basic_istream<char>]'
  219 |       operator>>(float& __f)
      |       ^~~~~~~~
/usr/include/c++/14/istream:219:25: note:   no known conversion for argument 1 from 'std::vector<std::tuple<long long int, long long int>, std::allocator<std::tuple<long long int, long long int> > >' to 'float&'
  219 |       operator>>(float& __f)
      |                  ~~~~~~~^~~
/usr/include/c++/14/istream:223:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(double&) [with _CharT = char; _Traits = std::char_traits<char>; __istream_type = std::basic_istream<char>]'
  223 |       operator>>(double& __f)
      |       ^~~~~~~~
/usr/include/c++/14/istream:223:26: note:   no known conversion for argument 1 from 'std::vector<std::tuple<long long int, long long int>, std::allocator<std::tuple<long long int, long long int> > >' to 'double&'
  223 |       operator>>(double& __f)
      |                  ~~~~~~~~^~~
/usr/include/c++/14/istream:227:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(long double&) [with _CharT = char; _Traits = std::char_traits<char>; __istream_type = std::basic_istream<char>]'
  227 |       operator>>(long double& __f)
      |       ^~~~~~~~
/usr/include/c++/14/istream:227:31: note:   no known conversion for argument 1 from 'std::vector<std::tuple<long long int, long long int>, std::allocator<std::tuple<long long int, long long int> > >' to 'long double&'
  227 |       operator>>(long double& __f)
      |                  ~~~~~~~~~~~~~^~~
/usr/include/c++/14/istream:328:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(void*&) [with _CharT = char; _Traits = std::char_traits<char>; __istream_type = std::basic_istream<char>]'
  328 |       operator>>(void*& __p)
      |       ^~~~~~~~
/usr/include/c++/14/istream:328:25: note:   no known conversion for argument 1 from 'std::vector<std::tuple<long long int, long long int>, std::allocator<std::tuple<long long int, long long int> > >' to 'void*&'
  328 |       operator>>(void*& __p)
      |                  ~~~~~~~^~~
/usr/include/c++/14/istream:122:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(__istream_type& (*)(__istream_type&)) [with _CharT = char; _Traits = std::char_traits<char>; __istream_type = std::basic_istream<char>]'
  122 |       operator>>(__istream_type& (*__pf)(__istream_type&))
      |       ^~~~~~~~
/usr/include/c++/14/istream:122:36: note:   no known conversion for argument 1 from 'std::vector<std::tuple<long long int, long long int>, std::allocator<std::tuple<long long int, long long int> > >' to 'std::basic_istream<char>::__istream_type& (*)(std::basic_istream<char>::__istream_type&)' {aka 'std::basic_istream<char>& (*)(std::basic_istream<char>&)'}
  122 |       operator>>(__istream_type& (*__pf)(__istream_type&))
      |                  ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/14/istream:126:7: note: candidate: 'std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(__ios_type& (*)(__ios_type&)) [with _CharT = char; _Tra