Вопрос задан 05.07.2023 в 20:58. Предмет Информатика. Спрашивает Pinto Tomyy.

В кинотеатре n рядов, в i-м из них находится ai кресел. На киносеанс по очереди приходят k человек,

при этом некоторые из них любят сидеть поближе к экрану, а некоторые — наоборот, подальше. Соответственно, если человек любит сидеть поближе к экрану, то по приходу в кинозал он занимает место на ближайшем к экрану ряду, на котором есть свободное место. Аналогично, любящие сидеть подальше занимают место на последнем ряду среди тех рядов, на которых еще есть свободное место. Вам заданы предпочтения людей в порядке прихода на киносеанс. Выведите для каждого человека, на какой ряд он сядет.
0 0
Перейти к ответам

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

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Стародуб Марина.

Ответ:

#include <iostream>

using namespace std;

int main()

{

int n, k, j;

cin >> n;

int a[n];

for (int i = 0; i < n; i++)

{

 cin >> a[i];

}

cin >> k;

int b[k];

for (int i = 0; i < k; i++)

{

 cin >> b[i];

}

for (int i = 0; i < k; i++)

{

 if (b[i] == 0)

 {

  j = 0;

  while (a[j] == 0) j++;

  cout << j + 1 << " ";

  a[j]--;

 }

 else

 {

  j = 0;

  while (a[n - j - 1] == 0) j++;

  cout << n - j << " ";

  a[n - j - 1]--;

 }

}

}

Объяснение:

Ну уж ТОЧНО не Осокин который решил раньше

0 0
Отвечает Хованский Юрий.

#include <iostream>

#include <vector>

typedef long long ll;

using namespace std;

ll n;

vector<ll> a,res;

void solve(int x){

   ll l = 0,r = n-1,ans = -1;

   while(l <= r){

       bool ok = false;

       ll m = (l+r)/2;

       if(a[m] > 0)

           ok = true;

       if(ok && x == 1){

           ans = m;

           r = m - 1;

       }

       else if(!ok && x == 1)

           l = m + 1;

       if(ok && x == 2){

           ans = m;

           l = m + 1;

       }

       else if(!ok && x == 2)

           r = m - 1;

   }

   if(ans >= 0)

       a[ans]--;

   res.push_back(ans+1);

}

signed main(){

   cin >> n;

   a.resize(n);

   for(ll &i:a)

       cin >> i;

   ll k;

   cin >> k;

   cout << "1 если ближе и 2 если дальше" << "\n";

   while(k--){

       int x;

       cin >> x;

       solve(x);

   }

   for(auto &i: res){

       if(i == 0)

           cout << "Не сядет, мест нет" << " ";

       else cout << i << "й ряд " << " ";

   }

}

0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Для решения этой задачи можно использовать жадный подход. Мы будем поочередно рассматривать предпочтения каждого человека и размещать их на подходящем ряду.

Пусть у нас есть n рядов и массив a из n элементов, где a[i] - количество кресел в i-м ряду. Также у нас есть массив предпочтений preferences, где preferences[i] определяет предпочтения i-го человека (1 - ближе к экрану, -1 - подальше от экрана).

Проходим по массиву предпочтений и размещаем каждого человека в подходящем ряду:

python
n = int(input()) # Количество рядов a = list(map(int, input().split())) # Количество кресел в каждом ряду k = int(input()) # Количество человек preferences = list(map(int, input().split())) # Предпочтения каждого человека rows = [] # Список рядов, где каждый элемент - пара (количество свободных мест, номер ряда) for i in range(n): rows.append((a[i], i + 1)) # Инициализируем список рядов for i in range(k): person_preference = preferences[i] # Если человек любит сидеть ближе к экрану if person_preference == 1: # Находим первый ряд с доступными местами и наименьшим номером for j in range(n): if rows[j][0] > 0: rows[j] = (rows[j][0] - 1, rows[j][1]) print(rows[j][1], end=" ") break # Если человек любит сидеть подальше от экрана else: # Находим последний ряд с доступными местами и наибольшим номером for j in range(n - 1, -1, -1): if rows[j][0] > 0: rows[j] = (rows[j][0] - 1, rows[j][1]) print(rows[j][1], end=" ") break print()

Этот код сначала создает список рядов и инициализирует их количество свободных мест. Затем он обрабатывает каждого человека по его предпочтениям и находит подходящий ряд для него.

Обратите внимание, что этот код решает задачу согласно описанию, но он может быть оптимизирован для больших входных данных.

0 0

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос