A. большая электронная матрица
ограничение времени 1 секунда
ограничение памяти 32mb
ввод matrix.in
вывод matrix.out
фирма по производству новых многоэлементных электронных матриц запускает новую линию, комплектуя ее узлом проверки готовой матрицы. узел засвечивает матрицу, подает напряжение на ее ячейки и считывает показания коэффициентов преломления каждой ячейки в виде цифр от 0 до 9. из этих показаний формируется таблица и записывается в файл. для оценки качества матрицы используется суммы коэффициентов преломления по каждой строке матрицы, а также количество сумм с максимальным значением из всех сумм коэффициентов по данной матрице. напишите программу, определяющую требуемые характеристики матрицы по имеющейся таблице коэффициентов преломления.
формат ввода
в первой строке входного файла matrix.in записано два натуральных числа, не превышающих 1024 - количество строк прямоугольной матрицы и количество ячеек в каждой строке. в последующих строках записаны без пробелов коэффициенты преломления.
формат вывода
в файл matrix.out следует вывести суммы коэффициентов преломления по одному в строке. последней строкой файла следует вывести количество сумм с максимальным значением из всех сумм коэффициентов по данной матрице. таким образом, в файле должно быть записано столько чисел, из скольких строк состоит электронная матрица, плюс одно число.
пример
ввод вывод
5 5
73022
95308
59282
55332
21797
14
25
26
18
26
2
С++20
#include <iostream>#include <vector>class Point {public: int x, y; Point() = default; Point(const Point &) = default; Point(int _x, int _y) : x(_x), y(_y) {} Point operator + (const Point& p) const { return Point {x + p.x, y + p.y}; } Point operator - (const Point& p) const { return Point {x - p.x, y - p.y}; } std::vector<Point> operator & (const Point& p) const { return std::vector<Point> { Point {x + p.x, y + p.y}, Point {x - p.x, y + p.y}, Point {x + p.x, y - p.y}, Point {x - p.x, y - p.y}, Point {x + p.y, y + p.x}, Point {x - p.y, y + p.x}, Point {x + p.y, y - p.x}, Point {x - p.y, y - p.x}, }; } static Point max (const Point& p1, const Point& p2) { return Point {std::max(p1.x, p2.x), std::max(p1.y, p2.y)}; } static Point min (const Point& p1, const Point& p2) { return Point {std::min(p1.x, p2.x), std::min(p1.y, p2.y)}; } [[nodiscard]] int distance_to_by_ch (const Point & p) const { return std::max(std::abs(p.x - x), std::abs(p.y - y)); } [[nodiscard]] int distance_to_by_m (const Point & p) const { return std::abs(p.x - x) + std::abs(p.y - y); } friend std::ostream &operator << (std::ostream &os, Point const &p) { return os << "(" << p.x << ";" << p.y << ")"; } Point & operator = (const Point &) = default; bool operator == (const Point & p) const { return x == p.x && y == p.y; }};class Horse {public: const Point p; explicit Horse (const Point position) : p(position) { } [[nodiscard]] bool can_I_kill_this_guy (const Point & m) const { auto field = p & Point{2, 3}; return std::find(field.begin(), field.end(), m) != field.end(); }};std::istream &to_number(std::istream &stream) { char ch; do { ch = stream.get(); } while (!isalpha(ch)); if (isupper(ch)) ch -= 16; else ch -= 48; stream.putback(ch); return stream;}int main () { Point horse_p{}, stranger_p{}; std::cin >> horse_p.x >> to_number >> horse_p.y; std::cin >> stranger_p.x >> to_number >> stranger_p.y; Horse jack(horse_p); std::cout << "I am a Horse placed on " << jack.p << ". " << "Can I kill those guy on " << stranger_p << "? " << "-> " << std::boolalpha << jack.can_I_kill_this_guy(stranger_p); }var m:array [0..14] of integer; i:integer;
function IsPositive(a:integer):boolean;
begin
result:=(a>-1);
end;
procedure work;
var min, max, count:integer;
begin
count:=0;
min:=m[0];
max:=0;
for i:=0 to 14 do begin
if IsPositive(m[i]) then begin
inc(count);
if m[i]>max then max:=m[i];
if m[i]<min then min:=m[i];
end;
end;
writeln('MAX: ', max);
writeln('MIN: ', min);
writeln('Count: ', count);
end;
begin
for i:=0 to 14 do begin
write('n: ');
readln(m[i]);
end;
work;
readln;
end.