В
Все
Б
Биология
Б
Беларуская мова
У
Українська мова
А
Алгебра
Р
Русский язык
О
ОБЖ
И
История
Ф
Физика
Қ
Қазақ тiлi
О
Окружающий мир
Э
Экономика
Н
Немецкий язык
Х
Химия
П
Право
П
Психология
Д
Другие предметы
Л
Литература
Г
География
Ф
Французский язык
М
Математика
М
Музыка
А
Английский язык
М
МХК
У
Українська література
И
Информатика
О
Обществознание
Г
Геометрия

Язык питон A. Петины Финансы
Ограничение времени:1 секунда

Ограничение памяти:64Mb

Ввод:finance.in

Вывод:finance.out

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

Формат ввода

Входной файл finance.in содержит 14 строк - по одной на каждый день. После каждого номера дня через пробел следует целое неотрицательное число, не превышающее 5000. Это сумма в рублях, затраченная Петей за день.

Формат вывода:В файл finance.out выведите ответ к задаче.

Показать ответ
Ответ:
timadva
timadva
06.12.2022 07:41

#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(0 оценок)
Ответ:
vampirka2
vampirka2
06.12.2022 07:41

#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(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота