#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; }; 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); min = *min_element(begin(in.marks), end(in.marks)); max = *max_element(begin(in.marks), end(in.marks)); 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"; } }