Language: C++

#include <bits/stdc++.h>

#define rep(i, n) for (int i = 0; i < (int)(n); i++)
#define all(v) v.begin(), v.end()
#define SP << " " 
#define LLi long long int

LLi mod=1000000007;
long double iv=0.0000000000000000009;

using namespace std;

int imax=2147483647;
long long int llimax=9223372036854775807;

//int型vectorを出力
void PV(vector<int> pvv) {
	rep(i, pvv.size()) cout << pvv[i] SP;
	cout << endl;
}

//LLi型vectorを出力
void PVL(vector<LLi> pvv) {
	rep(i, pvv.size()) cout << pvv[i] SP;
	cout << endl;
}
 
LLi modpow(LLi a, LLi n) {
    LLi res = 1;
    while (n > 0) {
        if (n & 1) res = res * a % mod;
        a = a * a % mod;
        n >>= 1;
    }
    return res;
}

struct dv{
	long double di;
	LLi sm;

	bool operator<(const dv &in) const{
		return di!=in.di ? di<in.di : sm<in.sm;
	};
};

int main(){

	long long int n, a, b, ans=0, ba=0, l, u;
	vector<dv> v;

	cin>> n;
	v.resize(n);

	rep(i, n){
		cin >> a >> b;
		v[i].di=1.0*a/b;
		v[i].sm=abs(a)+abs(b);
	}
	sort(v.begin(), v.end());

	rep(i, n) {
		auto lb = lower_bound(all(v.di), -1/v[i].di-iv);
		auto ub = lower_bound(all(v.di), -1/v[i].di+iv);
		l=lb-v.begin();
		u=ub-v.begin();
		for(int j=l;j<u;j++){
			if(v[j]%v[i].sm==0 || v[i].sm%v[j]==0) ba++;
		}
	}

	ans=modpow(2, n)-1;
	ans=ans%mod;
	ans+=mod-ba;
	ans=ans%mod;

	cout<< ans << endl;
 
	return 0;
}

Compiler output:
a.cc: In function 'int main()':
a.cc:63:45: error: 'class std::vector<dv>' has no member named 'di'
   63 |                 auto lb = lower_bound(all(v.di), -1/v[i].di-iv);
      |                                             ^~
a.cc:4:16: note: in definition of macro 'all'
    4 | #define all(v) v.begin(), v.end()
      |                ^
a.cc:63:45: error: 'class std::vector<dv>' has no member named 'di'
   63 |                 auto lb = lower_bound(all(v.di), -1/v[i].di-iv);
      |                                             ^~
a.cc:4:27: note: in definition of macro 'all'
    4 | #define all(v) v.begin(), v.end()
      |                           ^
a.cc:64:45: error: 'class std::vector<dv>' has no member named 'di'
   64 |                 auto ub = lower_bound(all(v.di), -1/v[i].di+iv);
      |                                             ^~
a.cc:4:16: note: in definition of macro 'all'
    4 | #define all(v) v.begin(), v.end()
      |                ^
a.cc:64:45: error: 'class std::vector<dv>' has no member named 'di'
   64 |                 auto ub = lower_bound(all(v.di), -1/v[i].di+iv);
      |                                             ^~
a.cc:4:27: note: in definition of macro 'all'
    4 | #define all(v) v.begin(), v.end()
      |                           ^
a.cc:68:32: error: no match for 'operator%' (operand types are '__gnu_cxx::__alloc_traits<std::allocator<dv>, dv>::value_type' {aka 'dv'} and 'long long int')
   68 |                         if(v[j]%v[i].sm==0 || v[i].sm%v[j]==0) ba++;
In file included from /usr/include/c++/14/valarray:605,
                 from /usr/include/x86_64-linux-gnu/c++/14/bits/stdc++.h:166,
                 from a.cc:1:
/usr/include/c++/14/bits/valarray_after.h:409:5: note: candidate: 'template<class _Dom1, class _Dom2> std::_Expr<std::__detail::_BinClos<std::__modulus, std::_Expr, std::_Expr, _Dom1, _Dom2>, typename std::__fun<std::__modulus, typename _Dom1::value_type>::result_type> std::operator%(const _Expr<_Dom1, typename _Dom1::value_type>&, const _Expr<_Dom2, typename _Dom2::value_type>&)'
  409 |     _DEFINE_EXPR_BINARY_OPERATOR(%, struct std::__modulus)
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/14/bits/valarray_after.h:409:5: note:   template argument deduction/substitution failed:
a.cc:68:38: note:   '__gnu_cxx::__alloc_traits<std::allocator<dv>, dv>::value_type' {aka 'dv'} is not derived from 'const std::_Expr<_Dom1, typename _Dom1::value_type>'
   68 |                         if(v[j]%v[i].sm==0 || v[i].sm%v[j]==0) ba++;
      |                                      ^~
/usr/include/c++/14/bits/valarray_after.h:409:5: note: candidate: 'template<class _Dom> std::_Expr<std::__detail::_BinClos<std::__modulus, std::_Expr, std::_Constant, _Dom, typename _Dom::value_type>, typename std::__fun<std::__modulus, typename _Dom1::value_type>::result_type> std::operator%(const _Expr<_Dom1, typename _Dom1::value_type>&, const typename _Dom::value_type&)'
  409 |     _DEFINE_EXPR_BINARY_OPERATOR(%, struct std::__modulus)
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/14/bits/valarray_after.h:409:5: note:   template argument deduction/substitution failed:
a.cc:68:38: note:   '__gnu_cxx::__alloc_traits<std::allocator<dv>, dv>::value_type' {aka 'dv'} is not derived from 'const std::_Expr<_Dom1, typename _Dom1::value_type>'
   68 |                         if(v[j]%v[i].sm==0 || v[i].sm%v[j]==0) ba++;
      |                                      ^~
/usr/include/c++/14/bits/valarray_after.h:409:5: note: candidate: 'template<class _Dom> std::_Expr<std::__detail::_BinClos<std::__modulus, std::_Constant, std::_Expr, typename _Dom::value_type, _Dom>, typename std::__fun<std::__modulus, typename _Dom1::value_type>::result_type> std::operator%(const typename _Dom::value_type&, const _Expr<_Dom1, typename _Dom1::value_type>&)'
  409 |     _DEFINE_EXPR_BINARY_OPERATOR(%, struct std::__modulus)
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/14/bits/valarray_after.h:409:5: note:   template argument deduction/substitution failed:
a.cc:68:38: note:   mismatched types 'const std::_Expr<_Dom1, typename _Dom1::value_type>' and 'long long int'
   68 |                         if(v[j]%v[i].sm==0 || v[i].sm%v[j]==0) ba++;
      |                                      ^~
/usr/include/c++/14/bits/valarray_after.h:409:5: note: candidate: 'template<class _Dom> std::_Expr<std::__detail::_BinClos<std::__modulus, std::_Expr, std::_ValArray, _Dom, typename _Dom::value_type>, typename std::__fun<std::__modulus, typename _Dom1::value_type>::result_type> std::operator%(const _Expr<_Dom1, typename _Dom1::value_type>&, const valarray<typename _Dom::value_type>&)'
  409 |     _DEFINE_EXPR_BINARY_OPERATOR(%, struct std::__modulus)
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/14/bits/valarray_after.h:409:5: note:   template argument deduction/substitution failed:
a.cc:68:38: note:   '__gnu_cxx::__alloc_traits<std::allocator<dv>, dv>::value_type' {aka 'dv'} is not derived from 'const std::_Expr<_Dom1, typename _Dom1::value_type>'
   68 |                         if(v[j]%v[i].sm==0 || v[i].sm%v[j]==0) ba++;
      |                                      ^~
/usr/include/c++/14/bits/valarray_after.h:409:5: note: candidate: 'template<class _Dom> std::_Expr<std::__detail::_BinClos<std::__modulus, std::_ValArray, std::_Expr, typename _Dom::value_type, _Dom>, typename std::__fun<std::__modulus, typename _Dom1::value_type>::result_type> std::operator%(const valarray<typename _Dom::value_type>&, const _Expr<_Dom1, typename _Dom1::value_type>&)'
  409 |     _DEFINE_EXPR_BINARY_OPERATOR(%, struct std::__modulus)
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/14/bits/valarray_after.h:409:5: note:   template argument deduction/substitution failed:
a.cc:68:38: note:   mismatched types 'const std::_Expr<_Dom1, typename _Dom1::value_type>' and 'long long int'
   68 |                         if(v[j]%v[i].sm==0 || v[i].sm%v[j]==0) ba++;
      |                                      ^~
/usr/include/c++/14/valarray:1200:1: note: candidate: 'template<class _Tp> std::_Expr<std::__detail::_BinClos<std::__modulus, std::_ValArray, std::_ValArray, _Tp, _Tp>, typename std::__fun<std::__modulus, _Tp>::result_type> std::operator%(const valarray<_Tp>&, const valarray<_Tp>&)'
 1200 | _DEFINE_BINARY_OPERATOR(%, __modulus)
      | ^~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/14/valarray:1200:1: note:   template argument deduction/substitution failed:
a.cc:68:38: note:   '__gnu_cxx::__alloc_traits<std::allocator<dv>, dv>::value_type' {aka 'dv'} is not derived from 'const std::valarray<_Tp>'
   68 |                         if(v[j]%v[i].sm==0 || v[i].sm%v[j]==0) ba++;
      |                                      ^~
/usr/include/c++/14/valarray:1200:1: note: candidate: 'template<class _Tp> std::_Expr<std::__detail::_BinClos<std::__modulus, std::_ValArray, std::_Constant, _Tp, _Tp>, typename std::__fun<std::__modulus, _Tp>::result_type> std::operator%(const valarray<_Tp>&, const typename valarray<_Tp>::value_type&)'
 1200 | _DEFINE_BINARY_OPERATOR(%, __modulus)
      | ^~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/14/valarray:1200:1: note:   template argument deduction/substitution failed:
a.cc:68:38: note:   '__gnu_cxx::__alloc_traits<std::allocator<dv>, dv>::value_type' {aka 'dv'} is not derived from 'const std::valarray<_Tp>'
   68 |                         if(v[j]%v[i].sm==0 || v[i].sm%v[j]==0) ba++;
      |                                      ^~
/usr/include/c++/14/valarray:1200:1: note: candidate: 'template<class _Tp> std::_Expr<std::__detail::_BinClos<std::__modulus, std::_Constant, std::_ValArray, _Tp, _Tp>, typename std::__fun<std::__modulus, _Tp>::result_type> std::operator%(const typename valarray<_Tp>::value_type&, const valarray<_Tp>&)'
 1200 | _DEFINE_BINARY_OPERATOR(%, __modulus)
      | ^~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/14/valarray:1200:1: note:   template argument deduction/substitution failed:
a.cc:68:38: note:   mismatched types 'const std::valarray<_Tp>' and 'long long int'
   68 |                         if(v[j]%v[i].sm==0 || v[i].sm%v[j]==0) ba++;
      |                                      ^~
a.cc:68:54: error: no match for 'operator%' (operand types are 'long long int' and '__gnu_cxx::__alloc_traits<std::allocator<dv>, dv>::value_type' {aka 'dv'})
   68 |                         if(v[j]%v[i].sm==0 || v[i].sm%v[j]==0) ba++;
/usr/include/c++/14/bits/valarray_after.h:409:5: note: candidate: 'template<class _Dom1, class _Dom2> std::_Expr<std::__detail::_BinClos<std::__modulus, std::_Expr, std::_Expr, _Dom1, _Dom2>, typename std::__fun<std::__modulus, typename _Dom1::value_type>::result_type> std::operator%(const _Expr<_Dom1, typename _Dom1::value_type>&, const _Expr<_Dom2, typename _Dom2::value_type>&)'
  409 |     _DEFINE_EXPR_BINARY_OPERATOR(%, struct std::__modulus)
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/14/bits/valarray_after.h:409:5: note:   template argument deduction/substitution failed:
a.cc:68:58: note:   mismatched types 'const std::_Expr<_Dom1, typename _Dom1::value_type>' and 'long long int'
   68 |                         if(v[j]%v[i].sm==0 || v[i].sm%v[j]==0) ba++;
      |                                                          ^
/usr/include/c++/14/bits/valarray_after.h:409:5: note: candidate: 'template<class _Dom> std::_Expr<std::__detail::_BinClos<std::__modulus, std::_Expr, std::_Constant, _Dom, typename _Dom::value_type>, typename std::__fun<std::__modulus, typename _Dom1::value_type>::result_type> std::operator%(const _Expr<_Dom1, typename _Dom1::value_type>&, const typename _Dom::value_type&)'
  409 |     _DEFINE_EXPR_BINARY_OPERATOR(%, struct std::__modulus)
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/14/bits/valarray_after.h:409:5: note:   template argument deduction/substitution failed:
a.cc:68:58: note:   mismatched types 'const std::_Expr<_Dom1, typename _Dom1::value_type>' and 'long long int'
   68 |                         if(v[j]%v[i].sm==0 || v[i].sm%v[j]==0) ba++;
      |                                                          ^
/usr/include/c++/14/bits/valarray_after.h:409:5: note: candidate: 'template<class _Dom> std::_Expr<std::__detail::_BinClos