Language: C++

//Bokan ga bokka--nn!!
//Daily Lunch Special Tanoshii !!
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <ctime>
#include <cassert>
#include <string>
#include <algorithm>
#include <vector>
#include <queue>
#include <stack>
#include <functional>
#include <iostream>
#include <map>
#include <set>
using namespace std;
typedef pair<int,int> P;
typedef pair<int,P> P1;
typedef pair<P,P> P2;
typedef long long ll;
#define pu push
#define pb push_back
#define mp make_pair
#define eps 1e-7
#define INF 2000000000
#define f first
#define s second
#define rep(i,x) for(int i=0;i<x;i++)
bool f[4005][4005];
int x1[1005],y1[1005],x2[1005],y2[1005],w,h,n;
int main()
{
	srand((unsigned int)time(NULL));
	while(1)
	{
		vector<int>x,y;
		scanf("%d %d %d",&w,&h,&n);
		for(int i=0;i<n;i++)
		{
			scanf("%d",&x1[i]);
			scanf("%d",&y1[i]);
			scanf("%d",&x2[i]);
			scanf("%d",&y2[i]);
			x.pb(x1[i]);
			if(x1[i]) x.pb(x1[i]-1);
			x.pb(x2[i]-1);
			x.pb(x2[i]);
			y.pb(y1[i]);
			if(y1[i]) y.pb(y1[i]-1);
			y.pb(y2[i]-1);
			y.pb(y2[i]);
		}
		x.pb(0); x.pb(w-1);
		y.pb(0); y.pb(h-1);
		sort(x.begin(),x.end());
		sort(y.begin(),y.end());
		x.erase(unique(x.begin(),x.end()),x.end());
		y.erase(unique(y.begin(),y.end()),y.end());
		for(int i=0;i<x.size();i++)
		{
			for(int j=0;j<y.size();j++)
			{
				f[i][j]=false;
			}
		}
		for(int i=0;i<n;i++)
		{
			int a=lower_bound(x.begin(),x.end(),x1[i])-x.begin();
			int b=lower_bound(x.begin(),x.end(),x2[i]-1)-x.begin();
			int c=lower_bound(y.begin(),y.end(),y1[i])-y.begin();
			int d=lower_bound(y.begin(),y.end(),y2[i]-1)-y.begin();
			for(int j=a;j<=b;j++)
			{
				for(int k=c;k<=d;k++)
				{
					f[j][k]=true;
				}
			}
		}
		int ret=0;
		for(int i=0;i<x.size();i++)
		{
			for(int j=0;j<y.size();j++)
			{
				if(!f[i][j])
				{
					ret++;
					queue<P>que;
					que.push(mp(i,j));
					while(!que.empty())
					{
						P p=que.front();que.pop();
						if(f[p.f][p.s]) continue;
						f[p.f][p.s]=true;
						int dx[4]={0,1,0,-1};
						int dy[4]={1,0,-1,0};
						for(int k=0;k<4;k++)
						{
							int nx=p.f+dx[k];
							int ny=p.s+dy[k];
							if(!(0<=nx && nx<x.size())) continue;
							if(!(0<=ny && ny<y.size())) continue;
							if(f[nx][ny]) continue;
							que.push(mp(nx,ny));
						}
				}
			}
		}
		printf("%d\n",ret);
	}
}

Compiler output:
a.cc:32:21: error: 'int y1 [1005]' redeclared as different kind of entity
   32 | int x1[1005],y1[1005],x2[1005],y2[1005],w,h,n;
      |                     ^
In file included from /usr/include/features.h:523,
                 from /usr/include/x86_64-linux-gnu/c++/14/bits/os_defines.h:39,
                 from /usr/include/x86_64-linux-gnu/c++/14/bits/c++config.h:683,
                 from /usr/include/c++/14/cstdio:41,
                 from a.cc:3:
/usr/include/x86_64-linux-gnu/bits/mathcalls.h:257:1: note: previous declaration 'double y1(double)'
  257 | __MATHCALL (y1,, (_Mdouble_));
      | ^~~~~~~~~~
a.cc: In function 'int main()':
a.cc:43:41: warning: pointer to a function used in arithmetic [-Wpointer-arith]
   43 |                         scanf("%d",&y1[i]);
      |                                         ^
a.cc:50:34: warning: pointer to a function used in arithmetic [-Wpointer-arith]
   50 |                         y.pb(y1[i]);
      |                                  ^
a.cc:50:29: error: no matching function for call to 'push_back(double (&)(double) noexcept)'
   50 |                         y.pb(y1[i]);
      |                         ~~~~^~~~~~~
In file included from /usr/include/c++/14/vector:66,
                 from a.cc:11:
/usr/include/c++/14/bits/stl_vector.h:1283:7: note: candidate: 'void std::vector<_Tp, _Alloc>::push_back(const value_type&) [with _Tp = int; _Alloc = std::allocator<int>; value_type = int]' (near match)
 1283 |       push_back(const value_type& __x)
      |       ^~~~~~~~~
/usr/include/c++/14/bits/stl_vector.h:1283:7: note:   conversion of argument 1 would be ill-formed:
a.cc:50:34: error: invalid conversion from 'double (*)(double) noexcept' to 'std::vector<int>::value_type' {aka 'int'} [-fpermissive]
   50 |                         y.pb(y1[i]);
      |                              ~~~~^
      |                                  |
      |                                  double (*)(double) noexcept
/usr/include/c++/14/bits/stl_vector.h:1300:7: note: candidate: 'void std::vector<_Tp, _Alloc>::push_back(value_type&&) [with _Tp = int; _Alloc = std::allocator<int>; value_type = int]' (near match)
 1300 |       push_back(value_type&& __x)
      |       ^~~~~~~~~
/usr/include/c++/14/bits/stl_vector.h:1300:7: note:   conversion of argument 1 would be ill-formed:
a.cc:50:34: error: invalid conversion from 'double (*)(double) noexcept' to 'std::vector<int>::value_type' {aka 'int'} [-fpermissive]
   50 |                         y.pb(y1[i]);
      |                              ~~~~^
      |                                  |
      |                                  double (*)(double) noexcept
a.cc:51:32: warning: pointer to a function used in arithmetic [-Wpointer-arith]
   51 |                         if(y1[i]) y.pb(y1[i]-1);
      |                                ^
a.cc:51:44: warning: pointer to a function used in arithmetic [-Wpointer-arith]
   51 |                         if(y1[i]) y.pb(y1[i]-1);
      |                                            ^
a.cc:51:45: warning: pointer to a function used in arithmetic [-Wpointer-arith]
   51 |                         if(y1[i]) y.pb(y1[i]-1);
      |                                        ~~~~~^~
a.cc:51:39: error: no matching function for call to 'push_back(double (*)(double) noexcept)'
   51 |                         if(y1[i]) y.pb(y1[i]-1);
      |                                   ~~~~^~~~~~~~~
/usr/include/c++/14/bits/stl_vector.h:1283:7: note: candidate: 'void std::vector<_Tp, _Alloc>::push_back(const value_type&) [with _Tp = int; _Alloc = std::allocator<int>; value_type = int]' (near match)
 1283 |       push_back(const value_type& __x)
      |       ^~~~~~~~~
/usr/include/c++/14/bits/stl_vector.h:1283:7: note:   conversion of argument 1 would be ill-formed:
a.cc:51:45: error: invalid conversion from 'double (*)(double) noexcept' to 'std::vector<int>::value_type' {aka 'int'} [-fpermissive]
   51 |                         if(y1[i]) y.pb(y1[i]-1);
      |                                        ~~~~~^~
      |                                             |
      |                                             double (*)(double) noexcept
/usr/include/c++/14/bits/stl_vector.h:1300:7: note: candidate: 'void std::vector<_Tp, _Alloc>::push_back(value_type&&) [with _Tp = int; _Alloc = std::allocator<int>; value_type = int]' (near match)
 1300 |       push_back(value_type&& __x)
      |       ^~~~~~~~~
/usr/include/c++/14/bits/stl_vector.h:1300:7: note:   conversion of argument 1 would be ill-formed:
a.cc:51:45: error: invalid conversion from 'double (*)(double) noexcept' to 'std::vector<int>::value_type' {aka 'int'} [-fpermissive]
   51 |                         if(y1[i]) y.pb(y1[i]-1);
      |                                        ~~~~~^~
      |                                             |
      |                                             double (*)(double) noexcept
a.cc:72:65: warning: pointer to a function used in arithmetic [-Wpointer-arith]
   72 |                         int c=lower_bound(y.begin(),y.end(),y1[i])-y.begin();
      |                                                                 ^
a.cc:113:2: error: expected '}' at end of input
  113 | }
      |  ^
a.cc:34:1: note: to match this '{'
   34 | {
      | ^
In file included from /usr/include/c++/14/bits/stl_algobase.h:71,
                 from /usr/include/c++/14/bits/specfun.h:43,
                 from /usr/include/c++/14/cmath:3906,
                 from a.cc:6:
/usr/include/c++/14/bits/predefined_ops.h: In instantiation of 'bool __gnu_cxx::__ops::_Iter_less_val::operator()(_Iterator, _Value&) const [with _Iterator = __gnu_cxx::__normal_iterator<int*, std::vector<int> >; _Value = double(double) noexcept]':
/usr/include/c++/14/bits/stl_algobase.h:1504:14:   required from '_ForwardIterator std::__lower_bound(_ForwardIterator, _ForwardIterator, const _Tp&, _Compare) [with _ForwardIterator = __gnu_cxx::__normal_iterator<int*, vector<int> >; _Tp = double(double) noexcept; _Compare = __gnu_cxx::__ops::_Iter_less_val]'
 1504 |           if (__comp(__middle, __val))
      |               ~~~~~~^~~~~~~~~~~~~~~~~
/usr/include/c++/14/bits/stl_algobase.h:1539:32:   required from '_ForwardIterator std::lower_bound(_ForwardIterator, _ForwardIterator, const _Tp&) [with _ForwardIterator = __gnu_cxx::__normal_iterator<int*, vector<int> >; _Tp = double(double) noexcept]'
 1539 |       return std::__lower_bound(__first, __last, __val,
      |              ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
 1540 |                                 __gnu_cxx::__ops::__iter_less_val());
      |                                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
a.cc:72:21:   required from here
   72 |                         int c=lower_bound(y.begin(),y.end(),y1[i])-y.begin();
      |                               ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/14/bits/predefined_ops.h:69:22: error: ISO C++ forbids comparison between pointer and integer [-fpermissive]
   69 |       { return *__it < __val; }
      |                ~~~~~~^~~~~~~