#include #include using namespace std; const size_t SCREEN_WIDTH = 80; const size_t MAX_ASTERISK = SCREEN_WIDTH - 3 - 1; double findMin(vector values) { double min; min = values[0]; for (size_t i = 1; i < values.size(); i++) if (values[i] < min) min = values[i]; return min; } double findMax(vector values) { double max; max = values[0]; for (size_t i = 1; i < values.size(); i++) if (values[i] > max) max = values[i]; return max; } size_t findMax(vector values) { size_t max; max = values[0]; for (size_t i = 1; i < values.size(); i++) if (values[i] > max) max = values[i]; return max; } vector GetCarts(vector values, size_t cartsCount) { vector carts(cartsCount); double min = findMin(values); double max = findMax(values); double step = (max - min) / cartsCount; for (size_t i = 0; i < values.size(); i++) { bool found = false; for (size_t j = 0; (j < cartsCount - 1) && !found; j++) { auto lo = min + j * step; auto hi = min + (j + 1) * step; if ((lo <= values[i]) && (values[i] < hi)) { carts[j]++; found = true; } } if (!found) carts[cartsCount - 1]++; } return carts; } vector inputValues() { size_t valuesLen; cin >> valuesLen; vector values(valuesLen); for (size_t i = 0; i < valuesLen; i++) cin >> values[i]; return values; } size_t inputCartsCount() { size_t cartsCount; cin >> cartsCount; return cartsCount; } vector ScaleCart(vector carts, size_t max) { if (max < MAX_ASTERISK) max = MAX_ASTERISK; vector cartsScales(carts.size()); for (size_t i = 0; i < carts.size(); i++) cartsScales[i] = MAX_ASTERISK * (static_cast(carts[i]) / max); return cartsScales; } void outputCarts(vector carts) { size_t max = findMax(carts); vector cartsScales = ScaleCart(carts, max); for (size_t i = 0; i < carts.size(); i++) { if (carts[i] < 100) cout << " "; if (carts[i] < 10) cout << " "; cout << carts[i] << "|"; for (size_t j = 0; j < cartsScales[i]; j++) cout << "*"; cout << endl; } } int main() { vector values = inputValues(); size_t cartsCount = inputCartsCount(); vector carts = GetCarts(values, cartsCount); outputCarts(carts); }