区間k大数照会【ブルーブリッジカップ】
5917 ワード
問題を解く構想.
2つの配列、1つ目の配列で入力を受信し、2つ目の配列で指定した区間の数を格納し、sortで降順に並べ、最後にKの大きい数を直接出力すればよい.△この問題は等しい場合を排除する必要はありません.つまり、4、4、3、1の中で2番目に大きいのは4で、3ではありません.
2つの配列、1つ目の配列で入力を受信し、2つ目の配列で指定した区間の数を格納し、sortで降順に並べ、最後にKの大きい数を直接出力すればよい.△この問題は等しい場合を排除する必要はありません.つまり、4、4、3、1の中で2番目に大きいのは4で、3ではありません.
#include
#include
#include
#include
using namespace std;
bool cmp(int a,int b){
return a>=b;
}
int main(){
int n;
cin>>n;
int arr[1005],s[1005];
for(int i=0;i<n;i++){
cin>>arr[i];
}
int m;
cin>>m;
while(m--){
memset(s,0,sizeof(s));
int start,end,index;
cin>>start>>end>>index;
//
int j=0;
for(int i=start-1;i<end;i++)
{
s[j++]=arr[i];
}
sort(s,s+(end-start+1),cmp);
cout<<s[index-1]<<endl;
}
return 0;
}