smaiershow
27.11.2020 07:41

решить задачу на питоне Харитон оказался перед непростым выбором: ему нужно решить, на какую из двух пересдач он пойдёт. К его огорчению, пойти на обе пересдачи он не может, так что ему приходится оценивать плюсы и минусы каждого решения.

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

Изначально Харитон собирался пойти на первую пересдачу. Но теперь он планирует последовательно рассмотреть все доводы и только после этого принять решение.

Чтобы не менять мнение слишком часто, Харитон выбрал некоторое число s. Если после рассмотрения очередного довода сумма доводов в пользу одной из пересдач будет превышать сумму доводов в пользу другой на величину, не меньшую s, Харитон сочтёт, что ему следует пойти на ту, сумма доводов которой больше. Конечно, возможно, что он и до этого считал именно так: в этом случае Харитон не меняет мнение.

Ваша задача — определить, на какую пересдачу пойдёт Харитон и сколько раз он поменяет свое мнение в процессе рассмотрения доводов.

Примечание. Чтобы отличать доводы в пользу первой и в пользу второй пересдачи, во входных данных доводы в пользу второй пересдачи будут записаны со знаком «–». Разумеется, сравнивать суммы доводов нужно по абсолютной величине.

Входные данные
В первой строке содержатся целые числа n и s (1 ≤ n ≤ 105,  1 ≤ s ≤ 109) — количество доводов и величина s, описанная в условии.

Во второй строке содержится n целых чисел d1, d2, ..., dn (1 ≤ |dj| ≤ 105) — веса доводов. Если довод имеет положительный вес, он в пользу первой пересдачи, если отрицательный — в пользу второй.

Выходные данные
В первой строке выведите число 1, если Харитон пойдёт на первую пересдачу, и число 2, если Харитон пойдёт на вторую пересдачу.

Во второй строке выведите целое число — сколько раз Харитон будет менять мнение в процессе рассмотрения доводов.

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
Sasha0067890
14.05.2020 03:53
Во первых зачем тут числа Фибоначи?

На вход подается 2 числа: a,b где
2^a + 2^(a+1) + 2^(a+2) + ...  2^(b-2) +  2^(b-1) + 2^b

На выводе число - результат формулы выше при подстановке a и b

1 вариант через цикл, сложность O(n):

VAR 
  a, b, adder, sum, i: INTEGER;
BEGIN 
  READ(a, b); 
  adder := 1; 
  FOR i := 1 TO b DO 
  BEGIN   
    adder := 2 * adder;   
    IF (i >= a)   
    THEN     
      sum := sum + adder 
  END; 
  WRITELN(sum);
END.

2 вариант через побитовые сдвиги, сложность O(1):

VAR  a, b: INTEGER;
BEGIN 
  READ(a, b);
  WRITELN((1 SHL (b+1)) - (1 SHL (a)));
END.
0,0(0 оценок)
Ответ:
1Err0r1
16.07.2020 20:20
#include "iostream"#include "ctime"using namespace std;
int main(){srand(time(NULL));cout<<"Enter amount of rows: "; int r; cin>>r; //количество строкcout<<"Enter amount of columns: "; int c; cin>>c;//количество столбцовint **arr = new int*[r]; // создание динамического двумерного массиваfor(int i = 0; i<r; i++){        arr[i] = new int[c];}for(int i = 0; i<r; i++){    for(int j = 0; j<c; j++){         arr[i][j] = 1 + rand() % 20;             cout<<arr[i][j]<<"\t";       }         cout<<endl;}cout<<endl;for(int i = 0; i<r; i++){       arr[i][4] = 2; //замена элементов 5 столбца на 2}
//вывод нового массиваfor(int i = 0; i<r; i++){    for(int j = 0; j<c; j++){             cout<<arr[i][j]<<"\t";       }         cout<<endl;}return 0;}
Это на c++
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота