Language: C++

#include <iostream>
#include <complex>
#include <vector>
using namespace std;

#define x real()
#define y imag()
#define pb push_back 
typedef double D;
typedef complex<D> P;
typedef struct circle{
	P p;
	D r;
} C;

int rel[24];
C c[24];
vector<int> color[4];
bool used[1<<24];
int cmax;

bool IC(C a,C b){
	D d=norm(a.p-b.p);
	D r=(a.r+b.r)*(a.r+b.r);
	return d<r;
}

int main(void){
	int n;
	while(cin >> n, n){
		cmax=0;
		for(int i=0;i<4;i++){
			while(!color[i].empty())
				color[i].pop_back();
		}
		for(int i=0;i<24;i++)
			rel[i]=0;
		for(int i=0;i<n;i++){
			int tmp;
			cin >> c[i].p.x >> c[i].p.y >> c[i].r;
			cin >> tmp;
			color[tmp-1].pb(i);
		}

		for(int i=0;i<n;i++)
			for(int j=0;j<i;j++)
				rel[i]=(rel[i]|(IC(c[i],c[j])<<j);

		use[(1<<n)-1]=true;
		for(int u=(1<<n)-1;u>=0;u--){
			if(!use[u])
				continue;
			int res=0;
			int tmp=u;
			while(tmp){
				if(tmp&1)
					res++;
				tmp >>=1;
			}
			cmax=max(cmax,n-res);
			for(int i=0;i<4;i++){
				for(int j=0;j<color[i].size();j++){
					if(u >>color[i][j]&0)
						continue;
					if(rel[color[i][j]]&u)
						continue;
					for(int k=j+1;k<color[i].size();k++){
						if(u >>color[i][k]&0)
							continue;
						if(rel[color[i][k]]&u)
							continue;
						used[u|(1<<color[i][j])|(1<<color[i][k])]=true;
					}
				}
			}
		}
		cout << cmax << endl;
	}
	return 0;
}

Compiler output:
a.cc: In function 'int main()':
a.cc:40:29: error: no match for 'operator>>' (operand types are 'std::istream' {aka 'std::basic_istream<char>'} and 'double')
   40 |                         cin >> c[i].p.x >> c[i].p.y >> c[i].r;
      |                         ~~~ ^~
      |                         |
      |                         std::istream {aka std::basic_istream<char>}
In file included from /usr/include/c++/14/iostream:42,
                 from a.cc:1:
/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>]' (near match)
  170 |       operator>>(bool& __n)
      |       ^~~~~~~~
/usr/include/c++/14/istream:170:7: note:   conversion of argument 1 would be ill-formed:
a.cc:6:15: error: cannot bind non-const lvalue reference of type 'bool&' to a value of type 'double'
    6 | #define x real()
      |               ^
a.cc:40:39: note: in expansion of macro 'x'
   40 |                         cin >> c[i].p.x >> c[i].p.y >> c[i].r;
      |                                       ^
/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>]' (near match)
  174 |       operator>>(short& __n);
      |       ^~~~~~~~
/usr/include/c++/14/istream:174:7: note:   conversion of argument 1 would be ill-formed:
a.cc:6:15: error: cannot bind non-const lvalue reference of type 'short int&' to a value of type 'double'
    6 | #define x real()
      |               ^
a.cc:40:39: note: in expansion of macro 'x'
   40 |                         cin >> c[i].p.x >> c[i].p.y >> c[i].r;
      |                                       ^
/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>]' (near match)
  177 |       operator>>(unsigned short& __n)
      |       ^~~~~~~~
/usr/include/c++/14/istream:177:7: note:   conversion of argument 1 would be ill-formed:
a.cc:6:15: error: cannot bind non-const lvalue reference of type 'short unsigned int&' to a value of type 'double'
    6 | #define x real()
      |               ^
a.cc:40:39: note: in expansion of macro 'x'
   40 |                         cin >> c[i].p.x >> c[i].p.y >> c[i].r;
      |                                       ^
/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>]' (near match)
  181 |       operator>>(int& __n);
      |       ^~~~~~~~
/usr/include/c++/14/istream:181:7: note:   conversion of argument 1 would be ill-formed:
a.cc:6:15: error: cannot bind non-const lvalue reference of type 'int&' to a value of type 'double'
    6 | #define x real()
      |               ^
a.cc:40:39: note: in expansion of macro 'x'
   40 |                         cin >> c[i].p.x >> c[i].p.y >> c[i].r;
      |                                       ^
/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>]' (near match)
  184 |       operator>>(unsigned int& __n)
      |       ^~~~~~~~
/usr/include/c++/14/istream:184:7: note:   conversion of argument 1 would be ill-formed:
a.cc:6:15: error: cannot bind non-const lvalue reference of type 'unsigned int&' to a value of type 'double'
    6 | #define x real()
      |               ^
a.cc:40:39: note: in expansion of macro 'x'
   40 |                         cin >> c[i].p.x >> c[i].p.y >> c[i].r;
      |                                       ^
/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>]' (near match)
  188 |       operator>>(long& __n)
      |       ^~~~~~~~
/usr/include/c++/14/istream:188:7: note:   conversion of argument 1 would be ill-formed:
a.cc:6:15: error: cannot bind non-const lvalue reference of type 'long int&' to a value of type 'double'
    6 | #define x real()
      |               ^
a.cc:40:39: note: in expansion of macro 'x'
   40 |                         cin >> c[i].p.x >> c[i].p.y >> c[i].r;
      |                                       ^
/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>]' (near match)
  192 |       operator>>(unsigned long& __n)
      |       ^~~~~~~~
/usr/include/c++/14/istream:192:7: note:   conversion of argument 1 would be ill-formed:
a.cc:6:15: error: cannot bind non-const lvalue reference of type 'long unsigned int&' to a value of type 'double'
    6 | #define x real()
      |               ^
a.cc:40:39: note: in expansion of macro 'x'
   40 |                         cin >> c[i].p.x >> c[i].p.y >> c[i].r;
      |                                       ^
/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>]' (near match)
  199 |       operator>>(long long& __n)
      |       ^~~~~~~~
/usr/include/c++/14/istream:199:7: note:   conversion of argument 1 would be ill-formed:
a.cc:6:15: error: cannot bind non-const lvalue reference of type 'long long int&' to a value of type 'double'
    6 | #define x real()
      |               ^
a.cc:40:39: note: in expansion of macro 'x'
   40 |                         cin >> c[i].p.x >> c[i].p.y >> c[i].r;
      |                                       ^
/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>]' (near match)
  203 |       operator>>(unsigned long long& __n)
      |       ^~~~~~~~
/usr/include/c++/14/istream:203:7: note:   conversion of argument 1 would be ill-formed:
a.cc:6:15: error: cannot bind non-const lvalue reference of type 'long long unsigned int&' to a value of type 'double'
    6 | #define x real()
      |               ^
a.cc:40:39: note: in expansion of macro 'x'
   40 |                         cin >> c[i].p.x >> c[i].p.y >> c[i].r;
      |                                       ^
/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>]' (near match)
  219 |       operator>>(float& __f)
      |       ^~~~~~~~
/usr/include/c++/14/istream:219:7: note:   conversion of argument 1 would be ill-formed:
a.cc:6:15: error: cannot bind non-const lvalue reference of type 'float&' to a value of type 'double'
    6 | #define x real()
      |               ^
a.cc:40:39: note: in expansion of macro 'x'
   40 |                         cin >> c[i].p.x >> c[i].p.y >> c[i].r;
      |                                       ^
/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>]' (near match)
  223 |       operator>>(double& __f)
      |       ^~~~~~~~
/usr/include/c++/14/istream:223:7: note:   conversion of argument 1 would be ill-formed:
a.cc:6:15: error: cannot bind non-const lvalue reference of type 'double&' to an rvalue of type 'double'
    6 | #define x real()
      |               ^
a.cc:40:39: note: in expansion of macro 'x'
   40 |                         cin >> c[i].p.x >> c[i].p.y >> c[i].r;
      |                                       ^
/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>]' (near match)
  227 |       operator>>(long double& __f)
      |       ^~~~~~~~
/usr/include/c++/14/istream:227:7: note:   conversion of argument 1 would be ill-formed:
a.cc:6:15: error: cannot bind non-const lvalue reference of type 'long double&' to a value of type 'double'
    6 | #define x real()
      |               ^
a.cc:40:39: note: in expansion of macro 'x'
   40 |                         cin >> c[i].p.x >> c[i].p.y >> c[i].r;
      |                                       ^
/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 'double' 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&))
      |