/*** https://mindcoding.ro/pb/shallow ***/ #include #include #include #include using namespace std; int main() { int N, M, hMin, hMax; cin >> N >> M >> hMin >> hMax; int* girlfriends = new int[N]; int* shoes = new int[M]; for (int i = 0; i < N; i++) { cin >> girlfriends[i]; } for (int i = 0; i < M; i++) { cin >> shoes[i]; } sort(girlfriends, girlfriends + N); sort(shoes, shoes + M, greater()); bool areAllGirlfriendsOk = true; int badGirlfriendsLimitIndex = -1; for (int i = N-1; i >= 0 ; i--) { if (girlfriends[i] > hMax) { areAllGirlfriendsOk = false; break; } if (girlfriends[i] < hMin) { badGirlfriendsLimitIndex = i; break; } } if (areAllGirlfriendsOk) { for (int i = 0; i <= badGirlfriendsLimitIndex; i++) { bool girlfriendIsOk = false; for (int j = 0; j < M; j++) { if (shoes[j] == -1) continue; int girlfriendNewHeight = girlfriends[i] + shoes[j]; if ((hMin <= girlfriendNewHeight) && (girlfriendNewHeight <= hMax)) { shoes[j] = -1; girlfriendIsOk = true; break; } } if (!girlfriendIsOk) { areAllGirlfriendsOk = false; break; } } } cout << (areAllGirlfriendsOk ? "Yes" : "No"); delete[] girlfriends; delete[] shoes; return 0; }