#include <iostream>
#include <vector>
using namespace std;
int main()
{
int x, y;
cin >> x >> y;
vector<vector<int> > t(x, vector<int> (y));
for (int i = 0; i < x; ++i){
for (int j = 0; j < y; ++j){
int mark;
cin >> mark;
t[i][j] = mark;
}
}
for (int i = 1; i < y; ++i){
t[0][i] += t[0][i - 1];
}
for (int i = 1; i < x; ++i){
t[i][0] += t[i - 1][0];
}
for (int i = 1; i < x; ++i){
for (int j = 1; j < y; ++j){
t[i][j] += min(t[i - 1][j], t[i][j - 1]);
}
}
cout << t[x - 1][y - 1] << endl;
}
Объяснение:
// Внимание! Если программа не работает, обновите версию!
begin
var a:=ReadlnString('IP=').ToWords('.');
if a.Length<>4 then
Writeln('Адрес - это четыре числа, разделенные точками')
else begin
var n:integer;
foreach var c in a do begin
if not TryStrToInt(c,n) then begin
Writeln(c,'- не целое число'); exit end
else
if n>255 then begin Writeln(c,' превышает 255'); exit end;
end;
Writeln('IP-адрес корректен')
end
end.
Примеры
IP= 128.16.35.a4
a4- не целое число
IP= 240.127.56.340
340 превышает 255
IP= 34.56.42,5
Адрес - это четыре числа, разделенные точками
IP= 128.0.0.255
IP-адрес корректен