这道题挺简单的,但是尝试了好多次,因为题目中给了边界条件但是没有考虑,最后才明白,另外直接使用数组也是不可以的,用vector容器却可以。
#include <iostream> #include <algorithm> #include <cstdio> #include <cstdlib> #include <cassert> #include <vector> using namespace std ; int main() { int N , T ; cin >> N >> T ; assert(1 <= N); assert(N <= 100000); assert(1 <= T); assert(T <= 1000); vector<int> width(N) ; for ( int i = 0 ; i <(int) N ; ++i) { cin >> width[i]; assert(width[i] == 1 || width[i] == 2 || width[i] == 3); } while(T--) { int i , j ; cin >> i >> j ; assert(0 <= i); assert(i < j); assert(j < N); assert(j-i+1 <= min(N, 1000)); int ans = width[i] ; while ( i <= j) { ans = min(ans,width[i]) ; i++; } cout << ans << endl ; } return 0 ; }