Hè đến rồi, Nam được bố dẫn đi chơi công viên. Trong công viên có nhiều gian hàng trò chơi, trong đó Nam thích nhất là gian trò chơi chọn số. Người ta viết sẵn một số dãy số số nguyên dương không được sắp xếp (dãy này có N phần tử, các phần tử có giá trị khác nhau đôi một, N≤10000, các số của dãy có giá trị từ 1 đến 30000), sau đó họ đưa ra 1 số M (M≤N) và yêu cầu người chơi tìm số lớn thứ M trong dãy số này. Nam vốn tính toán nhanh lẹ, nhưng dứng trước câu đố này Nam cũng nói: “Phải nhờ lập trình ta mới biết nhanh được!”. Bạn hãy giúp Nam thực hiện công việc này.
Dữ liệu vào: từ file văn bản CHONSO.INP bao gồm:
- Dòng đầu tiên là số N và M
- N dòng tiếp theo, mỗi dòng môt số là giá trị của các số trong dãy số
Dữ liệu ra: file văn bản CHONSO.OUT, gồm 1 dòng chứa 2 số K, L trong đó K chỉ số thứ tự của số cần tìm trong dãy và L là giá trị của số cần tìm.
Ví dụ:
CHONSO.INP
10 3
16
57
20
19
38
41
6
13
25
32
CHONSO.OUT
5 38
Đăng ký:
Đăng Nhận xét (Atom)
Bài được xem nhiều nhất
-
Cho dãy n số nguyên dương a1, a2, …, an và số nguyên dương S. Hãy đếm xem có bao nhiêu cặp phần tử (ai, aj) (i <> j) thỏa mãn ai + aj ...
-
Xét xâu S chỉ bao gồm các kí tự ngoặc mở ‘(‘ và ngoặc đóng ‘)’. Xâu S xác định một cách đặt ngoặc đúng, nếu thỏa mãn các điều kiện: · Tổng ...
-
Cho trước số nguyên dương n. Viết chương trình kiểm tra xem có bao nhiêu số nguyên dương nhỏ hơn hoặc bằng n nguyên tố cùng nhau với n (nghĩ...
-
Phân tích số nguyên dương thành tổng các số hạng của dãy Fibonaci sao cho ít số hạng nhất (các số hạng không được trùng nhau). Xem clip hư...
-
Nhập xâu s chỉ chứa các chữ cái viết hoa. Đếm xem s có bao nhiêu kí tự khác nhau. Input · Dòng 1: số test t · t dòng sau: mỗi dòng 1 xâu ...
-
Tìm X biết: 10 + 11 + 12 + 13 + ... + X = 5106 ------ Hướng dẫn giải: Hãy cố gắng nhớ lại công thức tính tổng dãy tăng có quy luật (số đ...
-
Đề thi tin học trẻ bảng C tỉnh Quảng Bình năm 2009 Trong máy tính, để tiết kiệm bộ nhớ, người ta thường tìm cách nén dữ liệu. T...
-
Một dãy được gọi là đối xứng gương nếu các phần tử cách đều đầu và cuối thì bằng nhau. Cho dãy số A(N). Hãy tìm một dãy con các phần tử liên...
-
(Tuyến sinh phổ thông năng khiếu 2007) Yêu cầu: Hãy tìm số âm lớn nhất X trong dãy.Cho một dãy gồm N số nguyên a1, a2, …, aN, mỗi số có gi...
-
Thầy Quách Văn Lượm Điện thoại, Zalo: 0915080405 Facebook: https://www.facebook.com/qvluom Group trao đổi giải thuật: Giải bài tập ...
Uses crt;
Trả lờiXóaVar n,m:longint;
f,vt:array[1..100000] of longint;
procedure nhap;
Var fi:text;
i,j,t:longint;
Begin
assign(fi,'CHONSO.INP');
reset(fi);
read(fi,n,m);
For i:=1 to n do
Begin
readln(fi,f[i]);
vt[i]:=i;
end;
For i:=1 to n-1 do
For j:=i+1 to n do
If f[j]>f[i] then
Begin
t:=f[i];
f[i]:=f[j];
f[j]:=t;
t:=vt[i];
vt[i]:=vt[j];
vt[j]:=t;
end;
close(fi);
end;
procedure xuat;
Var fo:text;
Begin
assign(fo,'CHONSO.OUT');
rewrite(fo);
Write(fo,vt[m]);
Write(fo,' ');
Write(fo,f[m]);
close(fo);
end;
Begin
nhap;
xuat;
end.
Code C++:
Trả lờiXóa#include
using namespace std;
struct T {
int val, pos;
} a[10006];
int n, m;
bool cmp(const T &b, const T &c) {
return b.val>c.val;
}
int main() {
freopen("CHONSO.inp", "r", stdin);
freopen("CHONSO.out", "w", stdout);
scanf("%d%d", &n, &m);
for(int i=1; i<=n; i++) scanf("%d", &a[i].val), a[i].pos=i;
sort(a+1, a+n+1, cmp);
cout << a[m].pos << " " << a[m].val;
return 0;
}
#include <iostream>
Trả lờiXóa#include <string>
#include <fstream>
using namespace std;
int main(int argc, char** argv) {
int n,m,a[10000],b[10000],g;
ifstream cin;
cin.open("D:/Dong/CHONSO.txt");
cin>>n>>m;
for (int i=0;i<n;i++){
cin >>a[i];
b[i]=a[i];
}
for (int i=0;i<n-1;i++){
for (int j=i+1;j<n;j++){
if (a[i]<a[j]){
g=a[i];
a[i]=a[j];
a[j]=g;
}
}
}
for (int i=0;i<n;i++) if (b[i]==a[m-1]) g=i+1;
ofstream cout;
cout.open ("D:/Dong/CHONSOout.txt");
cout <<"So can tim dung thu "<<g<<" trong day va co gia tri la "<<a[m-1];
cin.close();
cout.close();
return 0;
}
Nhận xét này đã bị tác giả xóa.
Trả lờiXóaNhận xét này đã bị tác giả xóa.
Trả lờiXóa#include
Trả lờiXóausing namespace std;
int main(int argc, char** argv) {
int n,m,a[100];
cin >>n; cin >>m;
for (int i=0;i>a[i];
for (int i=0;i<n-1;i++)
for (int j=i+1;j<n;j++)
{
if (a[i]<a[j])
{
swap(a[i],a[j]);
}
}
cout <<a[m-1];
return 0;
}
Nhận xét này đã bị tác giả xóa.
Trả lờiXóa
Trả lờiXóa#include
using namespace std;
bool giamdan(pair a,pair b){
return (a.first>b.first);
}
int main()
{
int n,m,t;
freopen("CHONSO.INP","r",stdin);
freopen("CHONSO.OUT","w",stdout);
cin >> n >> m;
vector> bai3;
for (int i=0;i> t;
bai3.push_back(make_pair(t,i+1));
}
sort(bai3.begin(),bai3.end(),giamdan);
cout << bai3[m-1].second << " " << bai3[m-1].first;
return 0;
}
//Cach su dung Vector Pair
#include
Trả lờiXóausing namespace std;
int n,a[10000],b[10000];
void heap(int i){
int max;
int l=2*i;
int r=2*i+1;
if ((i<=n) && (a[i]> n >> m;
a[0] =-1;
for (int i=1;i> a[i];
b[i] = a[i];
}
while (m>0){
a[1] =0;
for (int i=n/2;i>0;i--){
heap(i);
}
m -=1;
}
for (int i=1;i<n+1;i++){
if (b[i]==a[1]){
cout << i << " ";
break;
}
}
cout << a[1];
return 0;
}