Language: C

#include <limits.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <math.h>

#define P 1000000007

int comp(const void *a, const void *b){return *(int*)a-*(int*)b;}
int compw(const void *a, const void *b){return (*(int*)a>*(int*)b)-(*(int*)a<*(int*)b);}

uint32_t nextpint(void){
	char c=getchar();
	while(c<'0'||'9'<c) c=getchar();
	uint_fast32_t x=0;
	while('0'<=c && c<='9'){ x=x*10+c-'0'; c=getchar(); }
	return x;
}

#define V 202

inline int min(const int a, const int b){ return a>b?b:a; }

struct edge{
	int to, cap, rev;
};

bool used[V];
edge G[V][V];
int len[V];

void add_edge(int from, int to, int cap){
	edge F, T;
	F.to = to;
	F.cap = cap;
	F.rev = len[to];
	G[from][len[from]]=F;
	len[from]++;

	T.to = from;
	T.cap = 0;
	T.rev = len[from]-1;
	G[to][len[to]]=T;
	len[to]++;
}

int dfs(int v, int t, int f){
	if(v==t) return f;
	used[v]=1;
	int i, l=len[v];
	for(i=0; i<l; i++){
		edge &e=G[v][i];
		if(used[e.to]==0 && e.cap>0){
			int d = dfs(e.to, t, min(f, e.cap));
			if(d>0){
				e.cap -= d;
				G[e.to][e.rev].cap += d;
				return d;
			}
		}
	}
	return 0;
}

int max_flow(int s, int t){
	int flow = 0;
	while(1){
		memset(used, 0, sizeof(used));
		int f = dfs(s, t, INT_MAX);
		if(f==0) return flow;
		flow += f;
	}
}

int main(void){
	int n, i, j;
	int a[100][2], b[100][2];
	scanf("%d", &n);
	for(i=0; i<n; i++){ scanf("%d%d", &a[i][0], &a[i][1]); add_edge(n*2, i, 1);}
	for(i=0; i<n; i++){ scanf("%d%d", &b[i][0], &b[i][1]); add_edge(i+n, n*2+1, 1);}
	for(i=0; i<n; i++){
		for(j=0; j<n; j++){
			if(a[i][0]<b[j][0] && a[i][1]<b[j][1]) add_edge(i, j+n, 1);
		}
	}
	int ans=max_flow(n*2, n*2+1);
	/*
	int ans=0;
	while(1){
		int k=dfs(n*2, n*2+1, 1);
		if(k==0) break;
		ans+=k;
	}
	*/
	printf("%d\n", ans);
}


Compiler output:
main.c:30:1: error: unknown type name 'bool'
   30 | bool used[V];
      | ^~~~
main.c:8:1: note: 'bool' is defined in header '<stdbool.h>'; this is probably fixable by adding '#include <stdbool.h>'
    7 | #include <math.h>
  +++ |+#include <stdbool.h>
    8 | 
main.c:31:1: error: unknown type name 'edge'; use 'struct' keyword to refer to the type
   31 | edge G[V][V];
      | ^~~~
      | struct 
main.c: In function 'add_edge':
main.c:35:9: error: unknown type name 'edge'; use 'struct' keyword to refer to the type
   35 |         edge F, T;
      |         ^~~~
      |         struct 
main.c:36:10: error: request for member 'to' in something not a structure or union
   36 |         F.to = to;
      |          ^
main.c:37:10: error: request for member 'cap' in something not a structure or union
   37 |         F.cap = cap;
      |          ^
main.c:38:10: error: request for member 'rev' in something not a structure or union
   38 |         F.rev = len[to];
      |          ^
main.c:42:10: error: request for member 'to' in something not a structure or union
   42 |         T.to = from;
      |          ^
main.c:43:10: error: request for member 'cap' in something not a structure or union
   43 |         T.cap = 0;
      |          ^
main.c:44:10: error: request for member 'rev' in something not a structure or union
   44 |         T.rev = len[from]-1;
      |          ^
main.c: In function 'dfs':
main.c:54:17: error: 'edge' undeclared (first use in this function)
   54 |                 edge &e=G[v][i];
      |                 ^~~~
main.c:54:17: note: each undeclared identifier is reported only once for each function it appears in
main.c:54:23: error: 'e' undeclared (first use in this function)
   54 |                 edge &e=G[v][i];
      |                       ^