решить задачу! В университете вышел новый приказ ректора, который был направлен против неявок на экзамены и лично против раздолбая Васи. По нему, студенту во время сессии предоставляется S попыток для сдачи N экзаменов. Причем, сессия считается сданной, только если успешно сдано некоторое количество экзаменов, которое заранее не известно студентам. Всем известный непотопляемый раздолбай Вася определил, что вероятность на халяву сдать i-й экзамен с одной попытки равна Pi (с двух попыток: 1-(1-Pi)2, с трёх: 1-(1-Pi)3 и т. д.) Ваша задача состоит в том, чтобы Васе остаться на любимом факультете. Нужно заранее распределить Васины S попыток между его N экзаменами так, чтобы сумма соответствующих вероятностей (а это есть не что иное, как ожидаемое количество успешно сданных экзаменов), по всем экзаменам, была максимальной. Формат входных данных
В первой строке заданы два натуральных числа S и N, не превосходящих 100 – количество попыток и экзаменов соответственно. На второй строке находятся N чисел, где i-е число задаёт вероятность Pi (0≤Pi≤1) – вероятность сдать на халяву i-й экзамен.
Формат выходных данных
Программа должна вывести N чисел, где i-е число – это количество попыток, которые нужно отвести на i-й экзамен. Совокупность этих чисел должна соответствовать распределению попыток, которое даст максимальное ожидаемое количество успешно сданных экзаменов. В случаях, когда попытки можно распределить несколькими , нужно выдать любое из распределений.
Пример
Вход
3 2
0.5 0.7
Выход
2 1
n, counter, spisok, new_spisok = int(input()), 0, [], []
while counter != n:
spisok.append(int(input()))
counter += 1
c1, c2 = int(input()), int(input())
for i in spisok:
if c1 <= i <= c2:
new_spisok.append(i)
print(new_spisok, len(new_spisok))
Объяснение:
1) хз зачем там цикл while, но раз в условии написано, то сделал через него;
2) скорее всего работать нужно со списками, а не массивами, так как append - метод списка;
3) если нужно, могу объяснить каждую строку;
4) формат вывода массива не указан, поэтому вывод обычного массива с его длиной через запятую;
5) нижние слеши это пробелы типа)
Объяснение:
Объяснение:
#include <iostream>
#include<vector>
#include <algorithm>
using namespace std;
int main() {
ios::sync_with_stdio(false);
int N, A, B;
cin >> N;
vector < vector <int>> IO;
int lastDay = 0;
for (int i = 0; i < N; i++) {
cin >> A >> B;
IO.push_back(vector<int>());
IO[i].push_back(A);
IO[i].push_back(B);
IO[i].push_back(i);
}
sort(IO.begin(), IO.end());
for (int i = 0; i < N; i++)
{
if (lastDay >= IO[i][1]) {
IO[i][0] = -1;
IO[i][1] = -1;
}
else {
if (lastDay < IO[i][0]) {
lastDay = IO[i][1];
}
else if (lastDay >= IO[i][0]) {
IO[i][0] = lastDay+1;
lastDay = IO[i][1];
}
}
}
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
if (IO[j][2] == i) {
cout << IO[j][0] << " " << IO[j][1] << endl;
break;
}
}
}
return 0;
}