#include #include using namespace std; void solve() { int nFreq, nQueries; cin >> nFreq >> nQueries; vector frequencies(nFreq); map subArrays; for (int i = 0; i < nFreq; i++){ cin >> frequencies[i]; } for (int query = 0; query < nQueries; query++) { int start, end; cin >> start; cin >> end; start -= 1; end -= 1; bool isValid = false; for (int pos = start; pos >= 0; pos--) { if (subArrays.contains(pos)) { int currentSubArrayEnd = subArrays[pos]; int newSubArrayEnd = currentSubArrayEnd; if (currentSubArrayEnd < end) { for (int j = currentSubArrayEnd + 1; j <= end; j++) { if (frequencies[j - 1] <= frequencies[j]) { newSubArrayEnd += 1; } else { break; } } subArrays[pos] = newSubArrayEnd; if (newSubArrayEnd == end){ isValid = true; } } else { isValid = true; } break; } } if (!isValid) { int validEnd = start; for (int pos = start+1; pos <= end; pos++) { if (frequencies[pos - 1] <= frequencies[pos]) { validEnd += 1; } else { break; } } subArrays[start] = validEnd; if (validEnd == end) { isValid = true; } } if (isValid) { cout << "YES\n"; } else { cout << "NO\n"; } } } int main() { solve(); return EXIT_SUCCESS; } // 1 2 3 2 4 -1 1