Language: C++

#include <iostream>
#include <vector>
#include <tuple>
#include <map>

using namespace std;

int main(){
  int N;
  cin >> N;
  vector<int> x(N), y(N);
  for(int i = 0; i < N; ++i){
    cin >> x[i] >> y[i];
  }
  map<tuple<int, int>, int> r;
  for(int i = 0; i < N; ++i){
    for(int j = i + 1; j < N; ++j){
      int dx = x[i] - x[j], dy = y[i] - y[j];
      auto add = [&](int dx, int dy){
        auto const key = make_tuple(dx, dy);
        auto it = r.find(key);
        if(it != r.end()){
          it->second += 1;
        }else{
          r.insert(key, 1);
        }
      };
      add(dx, dy); add(-dx, -dy);
    }
  }
  int m = 0;
  for(auto it = r.cbegin(); it != r.cend(); ++it){
    if(m < it->second){
      m = it->second;
    }
  }
  cout << N - m + 1 << endl;
}

Compiler output:
a.cc: In lambda function:
a.cc:25:19: error: no matching function for call to 'std::map<std::tuple<int, int>, int>::insert(const std::tuple<int, int>&, int)'
   25 |           r.insert(key, 1);
      |           ~~~~~~~~^~~~~~~~
In file included from /usr/include/c++/14/map:63,
                 from a.cc:4:
/usr/include/c++/14/bits/stl_map.h:847:9: note: candidate: 'template<class _Pair> std::__enable_if_t<((bool)std::is_constructible<std::pair<const _Key, _Tp>, _Pair>::value), std::pair<typename std::_Rb_tree<_Key, std::pair<const _Key, _Tp>, std::_Select1st<std::pair<const _Key, _Tp> >, _Compare, typename __gnu_cxx::__alloc_traits<_Allocator>::rebind<std::pair<const _Key, _Tp> >::other>::iterator, bool> > std::map<_Key, _Tp, _Compare, _Alloc>::insert(_Pair&&) [with _Key = std::tuple<int, int>; _Tp = int; _Compare = std::less<std::tuple<int, int> >; _Alloc = std::allocator<std::pair<const std::tuple<int, int>, int> >]'
  847 |         insert(_Pair&& __x)
      |         ^~~~~~
/usr/include/c++/14/bits/stl_map.h:847:9: note:   candidate expects 1 argument, 2 provided
/usr/include/c++/14/bits/stl_map.h:924:9: note: candidate: 'template<class _Pair> std::__enable_if_t<((bool)std::is_constructible<std::pair<const _Key, _Tp>, _Pair>::value), typename std::_Rb_tree<_Key, std::pair<const _Key, _Tp>, std::_Select1st<std::pair<const _Key, _Tp> >, _Compare, typename __gnu_cxx::__alloc_traits<_Allocator>::rebind<std::pair<const _Key, _Tp> >::other>::iterator> std::map<_Key, _Tp, _Compare, _Alloc>::insert(const_iterator, _Pair&&) [with _Key = std::tuple<int, int>; _Tp = int; _Compare = std::less<std::tuple<int, int> >; _Alloc = std::allocator<std::pair<const std::tuple<int, int>, int> >]'
  924 |         insert(const_iterator __position, _Pair&& __x)
      |         ^~~~~~
/usr/include/c++/14/bits/stl_map.h:924:9: note:   template argument deduction/substitution failed:
a.cc:25:20: note:   cannot convert 'key' (type 'const std::tuple<int, int>') to type 'std::map<std::tuple<int, int>, int>::const_iterator' {aka 'std::_Rb_tree<std::tuple<int, int>, std::pair<const std::tuple<int, int>, int>, std::_Select1st<std::pair<const std::tuple<int, int>, int> >, std::less<std::tuple<int, int> >, std::allocator<std::pair<const std::tuple<int, int>, int> > >::const_iterator'}
   25 |           r.insert(key, 1);
      |                    ^~~
/usr/include/c++/14/bits/stl_map.h:942:9: note: candidate: 'template<class _InputIterator> void std::map<_Key, _Tp, _Compare, _Alloc>::insert(_InputIterator, _InputIterator) [with _Key = std::tuple<int, int>; _Tp = int; _Compare = std::less<std::tuple<int, int> >; _Alloc = std::allocator<std::pair<const std::tuple<int, int>, int> >]'
  942 |         insert(_InputIterator __first, _InputIterator __last)
      |         ^~~~~~
/usr/include/c++/14/bits/stl_map.h:942:9: note:   template argument deduction/substitution failed:
a.cc:25:19: note:   deduced conflicting types for parameter '_InputIterator' ('std::tuple<int, int>' and 'int')
   25 |           r.insert(key, 1);
      |           ~~~~~~~~^~~~~~~~
/usr/include/c++/14/bits/stl_map.h:661:7: note: candidate: 'std::map<_Key, _Tp, _Compare, _Alloc>::insert_return_type std::map<_Key, _Tp, _Compare, _Alloc>::insert(node_type&&) [with _Key = std::tuple<int, int>; _Tp = int; _Compare = std::less<std::tuple<int, int> >; _Alloc = std::allocator<std::pair<const std::tuple<int, int>, int> >; insert_return_type = std::_Rb_tree<std::tuple<int, int>, std::pair<const std::tuple<int, int>, int>, std::_Select1st<std::pair<const std::tuple<int, int>, int> >, std::less<std::tuple<int, int> >, std::allocator<std::pair<const std::tuple<int, int>, int> > >::insert_return_type; node_type = std::_Rb_tree<std::tuple<int, int>, std::pair<const std::tuple<int, int>, int>, std::_Select1st<std::pair<const std::tuple<int, int>, int> >, std::less<std::tuple<int, int> >, std::allocator<std::pair<const std::tuple<int, int>, int> > >::node_type]'
  661 |       insert(node_type&& __nh)
      |       ^~~~~~
/usr/include/c++/14/bits/stl_map.h:661:7: note:   candidate expects 1 argument, 2 provided
/usr/include/c++/14/bits/stl_map.h:666:7: note: candidate: 'std::map<_Key, _Tp, _Compare, _Alloc>::iterator std::map<_Key, _Tp, _Compare, _Alloc>::insert(const_iterator, node_type&&) [with _Key = std::tuple<int, int>; _Tp = int; _Compare = std::less<std::tuple<int, int> >; _Alloc = std::allocator<std::pair<const std::tuple<int, int>, int> >; iterator = std::_Rb_tree<std::tuple<int, int>, std::pair<const std::tuple<int, int>, int>, std::_Select1st<std::pair<const std::tuple<int, int>, int> >, std::less<std::tuple<int, int> >, std::allocator<std::pair<const std::tuple<int, int>, int> > >::iterator; const_iterator = std::_Rb_tree<std::tuple<int, int>, std::pair<const std::tuple<int, int>, int>, std::_Select1st<std::pair<const std::tuple<int, int>, int> >, std::less<std::tuple<int, int> >, std::allocator<std::pair<const std::tuple<int, int>, int> > >::const_iterator; node_type = std::_Rb_tree<std::tuple<int, int>, std::pair<const std::tuple<int, int>, int>, std::_Select1st<std::pair<const std::tuple<int, int>, int> >, std::less<std::tuple<int, int> >, std::allocator<std::pair<const std::tuple<int, int>, int> > >::node_type]'
  666 |       insert(const_iterator __hint, node_type&& __nh)
      |       ^~~~~~
/usr/include/c++/14/bits/stl_map.h:666:29: note:   no known conversion for argument 1 from 'const std::tuple<int, int>' to 'std::map<std::tuple<int, int>, int>::const_iterator' {aka 'std::_Rb_tree<std::tuple<int, int>, std::pair<const std::tuple<int, int>, int>, std::_Select1st<std::pair<const std::tuple<int, int>, int> >, std::less<std::tuple<int, int> >, std::allocator<std::pair<const std::tuple<int, int>, int> > >::const_iterator'}
  666 |       insert(const_iterator __hint, node_type&& __nh)
      |              ~~~~~~~~~~~~~~~^~~~~~
/usr/include/c++/14/bits/stl_map.h:834:7: note: candidate: 'std::pair<typename std::_Rb_tree<_Key, std::pair<const _Key, _Tp>, std::_Select1st<std::pair<const _Key, _Tp> >, _Compare, typename __gnu_cxx::__alloc_traits<_Allocator>::rebind<std::pair<const _Key, _Tp> >::other>::iterator, bool> std::map<_Key, _Tp, _Compare, _Alloc>::insert(const value_type&) [with _Key = std::tuple<int, int>; _Tp = int; _Compare = std::less<std::tuple<int, int> >; _Alloc = std::allocator<std::pair<const std::tuple<int, int>, int> >; typename std::_Rb_tree<_Key, std::pair<const _Key, _Tp>, std::_Select1st<std::pair<const _Key, _Tp> >, _Compare, typename __gnu_cxx::__alloc_traits<_Allocator>::rebind<std::pair<const _Key, _Tp> >::other>::iterator = std::_Rb_tree<std::tuple<int, int>, std::pair<const std::tuple<int, int>, int>, std::_Select1st<std::pair<const std::tuple<int, int>, int> >, std::less<std::tuple<int, int> >, std::allocator<std::pair<const std::tuple<int, int>, int> > >::iterator; typename __gnu_cxx::__alloc_traits<_Allocator>::rebind<std::pair<const _Key, _Tp> >::other = std::allocator<std::pair<const std::tuple<int, int>, int> >; typename __gnu_cxx::__alloc_traits<_Allocator>::rebind<std::pair<const _Key, _Tp> > = __gnu_cxx::__alloc_traits<std::allocator<std::pair<const std::tuple<int, int>, int> >, std::pair<const std::tuple<int, int>, int> >::rebind<std::pair<const std::tuple<int, int>, int> >; typename _Allocator::value_type = std::pair<const std::tuple<int, int>, int>; value_type = std::pair<const std::tuple<int, int>, int>]'
  834 |       insert(const value_type& __x)
      |       ^~~~~~
/usr/include/c++/14/bits/stl_map.h:834:7: note:   candidate expects 1 argument, 2 provided
/usr/include/c++/14/bits/stl_map.h:841:7: note: candidate: 'std::pair<typename std::_Rb_tree<_Key, std::pair<const _Key, _Tp>, std::_Select1st<std::pair<const _Key, _Tp> >, _Compare, typename __gnu_cxx::__alloc_traits<_Allocator>::rebind<std::pair<const _Key, _Tp> >::other>::iterator, bool> std::map<_Key, _Tp, _Compare, _Alloc>::insert(value_type&&) [with _Key = std::tuple<int, int>; _Tp = int; _Compare = std::less<std::tuple<int, int> >; _Alloc = std::allocator<std::pair<const std::tuple<int, int>, int> >; typename std::_Rb_tree<_Key, std::pair<const _Key, _Tp>, std::_Select1st<std::pair<const _Key, _Tp> >, _Compare, typename __gnu_cxx::__alloc_traits<_Allocator>::rebind<std::pair<const _Key, _Tp> >::other>::iterator = std::_Rb_tree<std::tuple<int, int>, std::pair<const std::tuple<int, int>, int>, std::_Select1st<std::pair<const std::tuple<int, int>, int> >, std::less<std::tuple<int, int> >, std::allocator<std::pair<const std::tuple<int, int>, int> > >::iterator; typename __gnu_cxx::__alloc_traits<_Allocator>::rebind<std::pair<const _Key, _Tp> >::other = std::allocator<std::pair<const std::tuple<int, int>, int> >; typename __gnu_cxx::__alloc_traits<_Allocator>::rebind<std::pair<const _Key, _Tp> > = __gnu_cxx::__alloc_traits<std::allocator<std::pair<const std::tuple<int, int>, int> >, std::pair<const std::tuple<int, int>, int> >::rebind<std::pair<const std::tuple<int, int>, int> >; typename _Allocator::value_type = std::pair<const std::tuple<int, int>, int>; value_type = std::pair<const std::tuple<int, int>, int>]'
  841 |       insert(value_type&& __x)
      |       ^~~~~~
/usr/include/c++/14/bits/stl_map.h:841:7: note:   candidate expects 1 argument, 2 provided
/usr/include/c++/14/bits/stl_map.h:879:7: note: candidate: 'void std::map<_Key, _Tp, _Compare, _Alloc>::insert(std::initializer_list<std::pair<const _Key, _Tp> >) [with _Key = std::tuple<int, int>; _Tp = int; _Compare = std::less<std::tuple<int, int> >; _Alloc = std::allocator<std::pair<const std::tuple<int, int>, int> >]'
  879 |       insert(std::initializer_list<value_type> __list)
      |       ^~~~~~
/usr/include/c++/14/bits/stl_map.h:879:7: note:   candidate expects 1 argument, 2 provided
/usr/include/c++/14/bits/stl_map.h:909:7: note: candidate: 'std::map<_Key, _Tp, _Compare, _Alloc>::iterator std::map<_Key, _Tp, _Compare, _Alloc>::insert(const_iterator, const value_type&) [with _Key = std::tuple<int, int>; _Tp = int; _Compare = std::less<std::tuple<int, int> >; _Alloc = std::allocator<std::pair<const std::tuple<int, int>, int> >; iterator = std::_Rb_tree<std::tuple<int, int>, std::pair<const std::tuple<int, int>, int>, std::_Select1st<std::pair<const std::