Kirito và những con rồng
Kirito đang bị mắc kẹt ở tầng 10 của một trò chơi tên là S.A.O. Để leo lên được các tầng tiếp theo, anh ấy phải đánh bại tất cả n con rồng sống ở tầng này. Kirito và những con rồng có sức mạnh, được biểu thị bằng một số nguyên. Trong cuộc đọ sức giữa hai đối thủ, kết quả của cuộc đọ sức được quyết định bởi sức mạnh của họ. Ban đầu, sức mạnh của Kirito bằng s.
Nếu Kirito bắt đầu đấu tay đôi với rồng thứ i (1 ≤ i ≤ n) và sức mạnh của Kirito không lớn hơn sức mạnh của rồng xi, thì Kirito thua trận đấu và chết. Nhưng nếu sức mạnh của Kirito lớn hơn sức mạnh của con rồng, thì anh ta sẽ đánh bại con rồng và được tăng thêm sức mạnh theo yi.
Kirito có thể chiến đấu với những con rồng theo bất kỳ thứ tự nào. Xác định xem liệu anh ta có thể chuyển sang tầng tiếp theo của trò chơi hay không, tức là đánh bại tất cả những con rồng mà không bị thua một lần nào.
Input:
- Dòng đầu tiên chứa hai số nguyên được phân tách bằng dấu cách s và n (1 ≤ s ≤ 10^4, 1 ≤ n ≤ 10^3). Sau đó n dòng tiếp theo: dòng thứ i chứa các số nguyên được phân tách bằng dấu cách là xi và yi (1 ≤ xi ≤ 10^4, 0 ≤ yi ≤ 10^4) - sức mạnh của con rồng thứ i và sức mạnh được thưởng khi đánh bại nó.
Output:
- Một dòng duy nhất là kết quả của cuộc chiến. In ra ''YES'' nếu Kirito có thể leo lên tầng tiếp theo và ngược lại in ra ''No''
Example 1:
Input 1:
2 2
1 99
100 0
Output 1:
YES
Input 2:
10 1
100 100
Output 2:
NO
Comments
Nếu không làm được thì đọc
Đây là dạng bài tập sanity check điển hình, nhắc nhở lại về vấn đề xử lý điều kiện vòng lặp hợp lý , không bị lặp vô hạn. Giống như bài toán ốc sên, chúng ta xem xét về điều kiện thành công và điều kiện thất bại.
Sau khi đã xem xết toàn bộ điều kiện trên, ta rút ra thuật toán sau:
vòng lặp sẽ được xây dựng trên đúng quy tắc trên: