Aiuto Upsetting Finals (finals)

Sto cercando di risolvere Finals e ricevo 75/100.
Ho tutti testcase corretti ad eccezione del 3o, non capisco dove sbaglio.

#include <bits/stdc++.h>
#pragma GCC optimize("Ofast")
#pragma GCC optimization ("unroll-loops")
using namespace std;

typedef long long ll;

typedef pair<int,int> pii;
typedef pair<ll,ll> pll;

typedef vector<int> vi;
typedef vector<ll> vll;

#define F first
#define S second

 bool operator ^ (const pii& a, const pii& b) {
        return b.F + b.S < a.F && a.F - a.S > b.F;  //S = second, F = first
}

int main() 
{ 
	int N, sol=0;
	
	cin >> N;
	
	vector<pii> job; //pii = pair<int,int>
	vi dp(N, 1);  //vi = vector<int> 
	
	for(int i = 0; i < N; i++){
		int x, u;
		cin >> x >> u;
		job.push_back({x, u});
	} 
	
	sort(job.begin(), job.end());

	for(int i = 0; i < N; i++)
		for(int j = 0; j < i; j++){
			if(job[i] ^ job[j])
				dp[i] = max(dp[i], dp[j] + 1);
			
			sol = max(sol, dp[i]);
		}
		
	cout<<sol;
	
	return 0; 
} 

semlicemente se N=1 mi da come risultato 0,
Risolto

1 Mi Piace