Школа программиста

Забыли пароль?
[задачи] [курсы] [олимпиады] [регистрация]
Логин:   Пароль:    
Скрыть меню
О школе
Правила
Олимпиады
Фотоальбом
Гостевая
Форум
Архив олимпиад
Архив задач
Состояние системы
Рейтинг
Курсы
Новичкам
Работа в системе
Курсы ККДП
Дистрибутивы
Статьи
Ссылки


 
Вернуться
Тема: Вопрос по тесту в задаче Волна (Курсы>Региональные Олимпиады>Личное первенство СФУ>14/15)
1
  1  Ларин Лев Олегович, 08 июня 2024 г. 16:28:39
      спасибо
  2  Терентьев Михаил Павлович, 08 июня 2024 г. 15:59:38
      "Если существует несколько вариантов ответа..."
  3  Ларин Лев Олегович, 08 июня 2024 г. 13:34:49
      }
sum = 0;

}

d = vector<vector<int>>(n, vector<int>(m, -1));
}
}

cout << ansI + 1 << " " << ansJ + 1 << " " << ansP << " " << mxSum;

return 0;
}
  4  Ларин Лев Олегович, 08 июня 2024 г. 13:33:25
      #include <algorithm>
#include <array>
#include <iomanip>
#include <iostream>
#include <map>
#include <queue>
#include <string>
#include <vector>
#include <set>
#include <cmath>

using namespace std;

using ll = long long;
//#define int ll

int n, m;

vector<vector<int>> d;

vector<pair<int, int>> steps = { {0, 1}, {0, -1}, {1, 0}, {-1, 0} };

void bfs(pair<int, int> st) {
queue<pair<int, int>> q;

q.push(st);
d[st.first][st.second] = 1;

while (!q.empty()) {
pair<int, int> v = q.front();
q.pop();


for (int i = 0; i < steps.size(); i++) {
pair<int, int> ne;
ne.first = v.first + steps[i].first;
ne.second = v.second + steps[i].second;

if (ne.first >= 0 && ne.first < n && ne.second >= 0 && ne.second < m && d[ne.first][ne.second] == -1) {
q.push(ne);
d[ne.first][ne.second] = d[v.first][v.second] + 1;
}
}
}
}

int main() {
cin.tie(nullptr)->sync_with_stdio(false);

int k; cin >> n >> m >> k;

d.resize(n);
for (int i = 0; i < n; i++) {
d[i].resize(m, -1);
}

vector<vector<int>> a(n, vector<int>(m));

for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
cin >> a[i][j];
}
}

int sum = 0, mxSum = -1e9, ansI = 0, ansJ = 0, ansP = 1;

for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
bfs({ i, j });

for (int curP = 1; curP <= k; curP++) {
for (int l = 0; l < n; l++) {
for (int h = 0; h < m; h++) {
if (d[l][h] <= curP) {
sum += a[l][h];
}

}
}

if (sum > mxSum) {
mxSum = sum;
ansI = i;
ansJ = j;
ansP = curP;
  5  Ларин Лев Олегович, 08 июня 2024 г. 13:33:03
      Выдаёт Wrong Answer, не могу понять почему. Вроде всё должно считаться правильно
  6  Ларин Лев Олегович, 08 июня 2024 г. 13:32:18
      Тест №7
1

Чтобы оставить сообщение необходимо зарегистрироваться и авторизоваться!

Красноярский краевой Дворец пионеров, (c)2006 - 2024, ИНН 246305493507, E-mail: admin@acmp.ru