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;
}
}
}