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;
}