Bài toán xếp hạng cho các em học sinh trong lớp bằng C/C++

Bài toán xếp hạng cho các em học sinh trong lớp bằng C/C++

Bài toán: Lớp học có n học sinh vừa trải qua kỳ thi cuối học kỳ I. Sau khi công bố điểm thi của các học sinh. Giáo viên chủ nhiệm muốn xem thứ tự xếp hạng của mỗi thí sinh.

Giới hạn thời gian : 1 sec.

[Input]

Dữ liệu đầu vào được lưu trong file INPUT.TXT. Dòng đầu chứa số lượng test case. Tiếp theo là danh sách test case.

Dòng đầu theo là số học sinh của hớp. N. ( 10 <= N <= 300000)

Dòng tiếp theo là điểm của các học sinh.Si ( 1 <= ST <= 32000)

[Output]

In ra kết quả ra file OUTPUT.TXT theo mỗi dòng thứ tự xếp hạng của mỗi thí sinh từ 1 cho đến N.

[I/O Example]

Input

2
10
1 2 3 4 5 6 7 8 9 9
10
27 22 15 30 29 12 20 13 6 10

Output

10 9 8 7 6 5 4 3 1 1
3 4 6 1 2 8 5 7 10 9

Chương trình giải:

#include <cstdio>

#include <iostream>

using namespace std;

int N;

int Si[300005];

int ranking[32001];

int repeat[32001];

int maxValue;

int minValue;

int main(int argc, char** argv)

{

 int tc, T, i;

 freopen("INPUT.TXT", "r", stdin);

 freopen("OUTPUT.TXT", "w", stdout);


 cin >> T;

 for (tc = 0; tc < T; tc++)

 {

  cin >> N;

  int rank = 1;

  fill_n(repeat, 32001, 0);

  maxValue = minValue = 0;

  for (i = 1; i <= N; i++) {

   cin >> Si[i];

   repeat[Si[i]]++;

   maxValue = maxValue < Si[i] ? Si[i] : maxValue;

   minValue = minValue < Si[i] ? minValue : Si[i];

  }

  while (maxValue >= minValue){

   if (repeat[maxValue] > 0){

    ranking[maxValue] = rank;

    rank += repeat[maxValue];

   }


   maxValue--;


  }

  for (int i = 1; i <= N; i++){

   cout << ranking[Si[i]] << " ";

  }

  cout << endl;

 }

 return 0;//Your program should return 0 on normal termination.

}
Bạn thấy bài viết này như thế nào?: 
Average: 10 (1 vote)
Ảnh của Tommy Tran

Tommy owner Express Magazine

Drupal Developer having 9+ year experience, implementation and having strong knowledge of technical specifications, workflow development. Ability to perform effectively and efficiently in team and individually. Always enthusiastic and interseted to study new technologies

  • Skype ID: tthanhthuy

Advertisement

 

jobsora

Dich vu khu trung tphcm

Dich vu diet chuot tphcm

Dich vu diet con trung

Quảng Cáo Bài Viết

 
Tạo album ảnh độc đáo trên Facebook bằng LifePix

Tạo album ảnh độc đáo trên Facebook bằng LifePix

Sao chỉ đăng những bức ảnh đơn điệu lên Facebook, trong khi đó bạn lại có thể làm nhiều hơn thế với LifePix?

nuoi con bang sua me

Nuôi con bằng sữa mẹ và lợi ích của việc nuôi con bằng sữa mẹ.

Tất cả chúng ta đều biết sữa mẹ là nguồn dinh dưỡng tốt nhất cho trẻ sơ sinh và trẻ nhỏ. Đây là loại thức ăn hoàn hảo để trẻ sơ sinh phát triển toàn diện. Trong sữa mẹ có chứa các chất đề kháng và dưỡng chất, các chất này đáp ứng đầy đủ các nhu cầu thay đổi của bé và bảo vệ bé khỏi viêm nhiễm và bệnh tật.

Máy tính Lenovo tại Trần Anh vừa xuất kho đã lỗi

Máy tính Lenovo tại Trần Anh vừa xuất kho đã lỗi

Máy Lenovo G480 vừa xuất tại kho của Công ty Trần Anh đã xuất hiện lỗi sọc đen dài tại màn hình góc phải, dẫn tới sập màn hình không thể cài đặt. Đây là những băn khoăn được khách hàng gửi đến các cơ quan báo chí phản ánh.

Tomdesgin.vn

 

Drupal Services