Cho một dãy số nguyên dương gồm N số .Viết chương trình nhập từ bàn phím số tự nhiên N, M và dãy N số. Hãy cho biết giá trị của số ở vị trí thứ M (M<N) trong dãy số sau khi được sắp xếp theo thứ tự tăng dần và vị trí của số thứ M trong dãy trước khi sắp hiện nằm ở vị trí E nào trong dãy đã được sắp xếp. Kết quả được xuất ra có cấu trúc như sau: - Hàng thứ nhất là số N và M; - Hàng thứ hai là dãy gồm N số trước khi được sắp thứ tự; - Hàng thứ ba là dãy N số sau khi sắp thứ tự; - Hàng thứ tư là giá trị của số ở vị trí thứ M trong dãy số sau khi sắp xếp; - Hàng thứ năm là vị trí thứ E trong dãy đã được sắp xếp của số ở vị trí thứ M trong dãy chưa xếp. Ví dụ: 6 3 8 20 5 3 7 9 3 5 7 8 9 20 7 2 Giải thích: N=6 là dãy có 6 số và M=3 là vị trí thứ 3; 8 20 5 3 7 9 là 6 số theo thứ tự đã được nhập (trước khi sắp); 3 5 7 8 9 20 là 6 số sau khi sắp thứ tự; Số 7 ở hàng thứ tư là giá trị của số ở vị trí thứ M=3 sau khi sắp thứ tự; Số 2 ở hàng thứ năm chỉ vị trí số thứ M=3 trong dãy trước khi sắp xếp (là số 5), nay đã được xếp ở vị trí thứ 2 trong dãy sắp xếp theo thứ tự tăng dần.

2 câu trả lời

#include <iostream>
#include <algorithm>
using namespace std;

int main(){
 int n,m;
 cin >> n >> m;
 cout << n << ' ' << m << '\n';
 int a[n+3];
 for (int i = 1;i <= n;i++)
  cin >> a[i];
 for (int i = 1;i <= n;i++)
  cout << a[i] << ' ';
 cout << '\n';
 int t = a[m];
 sort(a+1,a+n+1);
 for (int i = 1;i <= n;i++)
  cout << a[i] << ' ';
 cout << '\n';
 cout << a[m] << '\n';
 cout << lower_bound(a+1,a+n+1,t) - a;
}

#include<bits/stdc++.h>
using namespace std;
int main()
{
 long long n,m;
 cin>>n>>m;
 int a[n+1];
 for (int i=1;i<=n;i++){
  cin>>a[i];
 }
 long long t=a[m];
 cout<<n<<" "<<m<<endl;
 for (int i=1;i<=n;i++) cout<<a[i]<<" ";
 cout<<endl;
 sort(a+1,a+n+1);
 for (int i=1;i<=n;i++) cout<<a[i]<<" ";
 cout<<endl;
 cout<<a[m]<<endl;
 for (int i=1;i<=n;i++) {
  if (a[i]==t)

 {
  cout<<i;

  break;

 }

}
}

Câu hỏi trong lớp Xem thêm