Để tăng cường môi trường "Trường học thân thiện, Học sinh tích cực", ngày ~26/3~ năm nay Sở Giáo dục và Đào tạo tổ chức cuộc thi "Cặp đôi hoàn hảo" với sự tham gia là các trường THPT trong Tỉnh. Để tham gia, mỗi trường cử hai em học sinh của trường mình đi thi. Luật thi rất đơn giản: Cặp đôi nào có chênh lệch chiều cao giữa hai học sinh nhỏ nhất sẽ chiến thắng.
Trường của bạn có ~n~ học sinh đánh số từ ~1~ đến ~n~, học sinh thứ ~i~ có chiều cao là một số nguyên dương ~h_i~. Bạn hãy giúp trường bạn chọn cặp đôi "hoàn hảo" để đi thi nhé.
Input
- Dòng đầu chứa số nguyên dương ~n~;
- Dòng thứ hai chứa ~n~ số nguyên dương ~h_1, h_2, …, h_n~.
Hai số liên tiếp trên một dòng được ghi cách nhau một dấu cách.
Giới hạn:
- ~1 ≤ n ≤ 10^5; 1 ≤ h_i ≤ 10^9~.
Output
- Ghi trên một dòng số nguyên là chênh lệch chiều cao nhỏ nhất của hai bạn học sinh được chọn.
Sample
Input #1
5
150 155 161 172 170
Output #1
2
Hint
Xét #1, ta chọn hai học sinh số ~4~ và số ~5~ đi thi sẽ có chênh lệch chiều cao nhỏ nhất bằng ~2~.
Problem source: Chuyên Sơn La Online Judge
Bình luận
include <bits/stdc++.h>
using namespace std;
int main(){ int n; cin >> n; vector<int> a(n); for(int i = 0; i < n; i++){ cin >> a[i]; } sort(a.begin(), a.end()); int minval = INTMAX; for(int i = 0; i < n - 1; i++){ int mindiff = a[i + 1] - a[i]; if(minval > mindiff){ minval = mindiff; } } cout << minval <<endl; }
n=int(input('')) mang=[int(i) for i in input().split()] minn=float('inf') for i in range(len(mang)): for j in range(i+1,len(mang)): hieu=abs(mang[i]-mang[j]) if hieu<minn:minn=hieu print(minn) mình làm vầy mấy case cuối nó lỗi thì sửa sao mọi người
Mấy chú tham khảo nhé
include<bits/stdc++.h>
using namespace std; int main() { int n; cin>>n; int a[n]; for(int i=0;i<n;i++){ cin>>a[i]; } int minn=1e9; sort(a,a+n); for(int i=0;i<n;i++) { if(i+1==n) break; if(minn>(a[i+1]-a[i])) minn=a[i+1]-a[i]; } cout<<minn; return 0; }
Mấy bác giúp e bị tle case cuối mặc dù e đã sort+duyệt tìm min tới n ạ
mọi người cho mình xin test case 2 với ạ
Bài này em dùng hàm for để tìm min từ đặt min ở vị trí 0 và 1 trừ nhau rồi chạy vòng lặp thì lại bị lỗi test case 5 mà khi dùng hàm min trong thư viện algorithm thì lại được , Có thể giải thích cho em hiểu với được ko ạ ?
https://ideone.com/AA3Ymq
include <iostream>
include <algorithm>
include <cmath>
using namespace std; int main() { iosbase::syncwith_stdio(0); cin.tie(0); cout.tie(0);
}
test 4 là gì v
Bài cụ thể là ae nhập vô xong sort lấy 2 phần tử liên tiếp trừ cho nhau rồi lấy min trong vong for nha
CODE C++ CHO AE NÀO CẦN, NẾU THẤY HAY CHO TUI XIN UPVOTE NHA
include<bits/stdc++.h>
using namespace std;
define int long long
int n, h[100001], minn = INT_MAX; void solve() {
} main() {
}
bác làm được test 4 chưa bác
Đừng có nói với tôi là bạn sort xong rồi, lấy 2 số lớn nhất và lớn nhì trừ cho nhau nhé. Vậy là sai rồi đấy