来自菜鸟的求救

2. 最小值
题目ID:9171
必做题 100分
最新提交:0 分
历史最高:0 分
时间限制: 1000ms
空间限制: 256000kB
题目描述
时间:1
空间:256M

题目描述

给出一个n个数的数列a1,a2,…,an,有Q个询问。每次问你区间al,al+1,al+2,…,ar中的最小值是多少?

输入格式

第一行两个整数n和Q。

第二行n个整数。

接下来Q行每行2个整数l和r。

输出格式

共Q行,每行一个整数。
输入格式:

第一行两个整数n和Q。

第二行n个整数。

接下来Q行每行2个整数l和r。

输出格式:

共Q行,每行一个整数。

样例输入:

3 2
1 2 3
2 3
1 3
样例输出:

2
1
约定:

所有数不超过1000。

#include<bits/stdc++.h>
using namespace std;
int main(){
  int n,q,a[1000],l,r,m=INT_MAX;
  cin>>n;
  for(int i=0; i<n; i++){
    cin>>a[i];
  }
  for(int i=0; i<q; i++){
    cin>>l>>r;
    for(int j=l-1; j<r; j++){
      if(a[j]<m) m=a[j];
    }
    cout<<m<<endl;
  }
  return 0;
}

哪位大佬找一下错。

1 个赞

你这个题面稍微修一下行嘛

3 个赞

哈哈

2 个赞

题目描述

给出一个n个数的数列a1,a2,…,an,有Q个询问。每次问你区间al,al+1,al+2,…,ar中的最小值是多少?

输入格式

第一行两个整数n和Q。

第二行n个整数。

接下来Q行每行2个整数l和r。

输出格式

共Q行,每行一个整数。

2 个赞

你没输入Q

3 个赞

你输入完N之后Q忘了输入了

3 个赞

他输出错了 ,输出了个m,没输出数组

3 个赞

不用,他只要在把cin>>n;改成cin>>n>>q;就好了

3 个赞

1.没输入Q
2.m没有每次初始化成最大值

3 个赞

O

3 个赞

对哈,我一般习惯把M直接定义到循环里所以没注意到第二点

3 个赞

嗯,再把m每次初始化成最大值就好了

2 个赞

嗯。

2 个赞

多谢各位大佬指导

3 个赞