Информатика, вопрос задал tarabanovarseniy1eat , 2 года назад

РЕШИТЬ ТОЛЬКО НА С++
Золото
Мудрец ходит по комнате размера n×m клеток. В каждой клетке комнаты лежит заданное количество золота. Проходя по клетке мудрец забирает всё золото с неё. Зная план комнаты и маршрут мудреца, посчитайте сколько золота он собрал. В задаче не гарантируется, что мудрец не проходил по одной и той же клетке более одного раза.

Входные данные

Во входных данных описан план комнаты: сначала количество строк n, затем — количество столбцов m (1≤n≤20,1≤m≤20). Затем записано n строк по m чисел в каждой — количество килограммов золота, которое лежит в данной клетке (число от 0 до 50). Далее записано число x — сколько клеток обошел мудрец. Далее записаны координаты этих клеток (координаты клетки — это два числа: первое определяет номер строки, второе — номер столбца), верхняя левая клетка на плане имеет координаты (1,1), правая нижняя — (n,m).

Выходные данные

Выведите количество килограммов золота, которое собрал мудрец.

Примеры
Ввод

3 3
1 2 3
4 5 6
7 8 9
5
1 1
1 2
1 1
1 2
1 1
Вывод
3

Ответы на вопрос

Ответил bilanovfatim
0

Ответ:

#include <iostream>

#include <vector>

using namespace std;

int main() {int m, n, cx, cy;

 cin >> m >> n;

 vector<int>a;

 a.reserve(m*n);

 for (int i = 0;i < m;++i) {

   for(int j = 0;j < n;++j) {

     int v;

     cin >> v;

     a.push_back(v);

   }

 }

 int x;

 int value = 0;

 cin >> x;

 for (int k = 0;k < x;++k) {

   cin >> cx >> cy;

   if((a[cy-1 + (cx-1)*cy]) != -100) {

     value += a[cy-1 + (cx-1)*cy];

     a[cy-1 + (cx-1)*cy] = -100;

   }

 }cout << value;

 

}

Объяснение:

Новые вопросы