Skip to content

Instantly share code, notes, and snippets.

@ngobach
Last active September 6, 2016 10:43
Show Gist options
  • Save ngobach/53384167ff3c9e8f0ccdcf6bed733385 to your computer and use it in GitHub Desktop.
Save ngobach/53384167ff3c9e8f0ccdcf6bed733385 to your computer and use it in GitHub Desktop.
BCMARA - Chạy đua marathon

BCMARA - Chạy đua marathon

Link đề bài: BCMARA.
Vì bài này rất cơ bản nhưng nhiều bạn chưa làm được, nên mình làm bài hướng dẫn này.

Hướng dẫn

Bài này các bạn đọc dữ liệu vào và lưu vào mảng với đơn vị là giây, tức là đọc vào cả giờ phút giây sau đó đổi về giây để tiện lưu trữ và so sánh.
Sau đó sắp xếp tăng dần và in ra, có thể các bạn tự viết hàm sort hoặc sử dụng hàm sort (quick sort, nhanh hơn selection sort mà chúng ta hay dùng rất nhiều).

Nói qua về hàm sort
Cách sử dụng hàm sort, trước tiên cần include thư viện <algorithm>, sau đó gọi sort(A,A+n) với A là mảng của bạn, n là số phần tử. Đây là cách sort trên mảng, với các kiểu dữ liệu khác như vector, thì chúng ta sẽ sử dụng iterator.

Sau khi sắp xếp các kết quả theo thứ tự tăng dần, việc cần làm là in chúng ra, nhưng không phải theo đơn vị giây, mà cần phải chuyển thành dạng "giờ phút giây". Cách chuyển cũng không khó lắm, các bạn có thể tham khảo cách chuyển trong code mình.

Mã nguồn

#include <iostream>
#include <algorithm>

using namespace std;

int main(){
	ios::sync_with_stdio(false);
	cin.tie(NULL);
	
	int a[5005], h,m,s,n;
	cin >> n;
	for (int i=0;i<n;i++) {
		cin >> h >> m >> s;
		a[i] = (h*60+m)*60+s;
	}
	sort(a, a+n);
	for (int i=0;i<n;i++)  {
		cout << a[i]/3600 << ' ' << (a[i]/60)%60 << ' ' << a[i]%60 << '\n';
	}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment