[Buổi 30][Template & ngoại lệ][HW] Bài 5: Thống kê generic theo ngưỡng


LÀM BÀI

Points: 100
Time limit: 1.0s
Memory limit: 256M

Author:
Problem types
Allowed languages
C++

Thống kê generic theo ngưỡng

Bối cảnh

Viết template statsAbove<T>(vector<T>, threshold) trả ba giá trị: count phần tử ≥ threshold, sum của chúng và maximum trong nhóm. Nếu không có phần tử đạt, caller in 0 0 NONE. Chương trình hỗ trợ type intdouble theo type tag; với double, sum/max in hai chữ số.

Bài Medium nâng từ generic min/max đơn lẻ sang generic traversal có state aggregate. Thuật toán phải dùng cùng một template function cho cả hai kiểu số.

B30 kết hợp hai ý tưởng: generic code để tránh copy thuật toán theo kiểu dữ liệu và exception để tách luồng lỗi khỏi luồng thành công. Exception chỉ nên xuất hiện ở điểm precondition/validation thất bại; state hoặc aggregate không được cập nhật trước khi biết thao tác đã hợp lệ. Với template, hãy xác định rõ các toán tử/operation mà type T cần hỗ trợ.

Yêu cầu

  1. Một template function dùng chung.
  2. Đếm/sum/max phần tử ≥ threshold.
  3. Hỗ trợ I và D.
  4. Format double 2 decimals.

Input

Dòng 1 type n threshold; dòng 2 n giá trị.

Output

Summary theo type.

Ràng buộc

1≤n≤5000.

Ví dụ 1

Input

I 5 3
1 3 5 2 4

Output

3 12 5

Giải thích

Các phần tử ≥3 là3,5,4: count3, sum12, max5. Template instantiation với long long trả đúng 3 12 5.

Ví dụ này đồng thời kiểm tra cả nhánh thành công và tính ổn định khi có lỗi/generic state. Nếu validation fail, output lỗi phải xuất hiện mà dữ liệu hợp lệ trước đó vẫn được giữ. Nếu generic function được instantiate với type khác, cùng logic xử lý vẫn phải tạo kết quả tương ứng theo type đó.

Ví dụ 2

Input

D 4 2.5
1.5 2.5 3.0 2.0

Output

2 5.50 3.00

Giải thích

Các giá trị ≥2.5 là2.5 và3.0: count2, sum5.50, max3.00. Cùng template chạy với double và caller chỉ khác phần format.

Ví dụ này đồng thời kiểm tra cả nhánh thành công và tính ổn định khi có lỗi/generic state. Nếu validation fail, output lỗi phải xuất hiện mà dữ liệu hợp lệ trước đó vẫn được giữ. Nếu generic function được instantiate với type khác, cùng logic xử lý vẫn phải tạo kết quả tương ứng theo type đó.

Thông tin học tập

  • Module: M08
  • Buổi: B30
  • Loại bài: HOMEWORK
  • Độ khó: Medium
  • Concepts: function template, vector, generic numeric operations, pair result
  • Giới hạn kiến thức: B01-B30
  • Time limit: 1 second(s)
  • Memory limit: 256 MB
  • Point: 100

Comments

There are no comments at the moment.

Zalo