#include #include using namespace std; struct Input { vector marks; int NCharts = 0; }; Input input_data() { Input in; int VecSize = 0; cin >> VecSize; in.marks.resize(VecSize); for (int i = 0; i < VecSize; i++) { cin >> in.marks[i]; } cin >> in.NCharts; return in; }; void FindMinMax(const vector& marks, double & min, double & max) { max = 0; min = marks[0]; for (double x : marks) { if (x > max) { max = x; } if (x < min) { min = x; } } }; int main() { Input in = input_data(); int VecSize = size(in.marks); double interval = 0, inp = 0, i = 0, min = 0, max = 0, scale = 1; vector chart(in.NCharts); FindMinMax(in.marks, min, max); interval = (max - min) / in.NCharts; for (int x : in.marks) { i = 0; while ((x > min + interval * (i + 1))) { i += 1; } chart[i] += 1; } max = *max_element(begin(chart), end(chart)); if ((max+4) > 80) { scale = (max+4) / 80; } for (i = 0; i < in.NCharts; i++) { if (chart[i] < 10) { cout << " "; } else if (9 < chart[i] && chart[i]< 100) { cout << " "; } cout << chart[i] << "|"; max = (chart[i] / scale); if (scale != 1) { max -= 1; } for (int j = 0; j < max; j++) { cout << "*"; } cout << "\n"; } }