IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Копилка
Оленька
сообщение 21.11.2005 15:22
Сообщение #1


Гость






Слёзно прошу, помогите мне пожалуйста решить задачу в Паскале. Сама я не могу в ней разобраться, а уже скоро надо её отдать преподавателю!

Пожалуйста, решите ! текст программы выложите сюда!
Заранее благодарна!

Копилка
Заданы вес Е пустой копилки и вес F копилки с монетами. В копилке могут находиться монеты N видов; известны ценность Pi каждого вида монет и вес Wi одной монеты. Найти минимальную и максимальную суммы денег, которые могут находиться в копилке.
Ограничения:
1 < E < F < 10000, 1 < N < 500, 1 < Рi < 50000, 1 < Wi < 10000,
все числа целые, время 2 с.

Ввод из файла piggy.in. В первой строке находятся числа Е и F, во второй - число N, в следующих N строках - по два числа, Рi и Wi.

Вывод в файл piggy.out. Выводятся два числа через пробел - минимальная и максимальная суммы. Если копилка не может иметь точно заданный вес при условии, что она наполнена монетам заданных видов, - вывести This is impossible...

Примеры
Цитата
Ввод 1
1000 1100
2
1 1
5 2
Вывод 1
100 250


Ввод 2
1000 1010
2
6 3
2 2
Вывод 2
10 16


Ввод 3
1000 2000
1
10 3
Вывод 3
This is impossible


Сообщение отредактировано: volvo - 21.11.2005 15:58
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
virt
сообщение 23.11.2005 23:17
Сообщение #2


Знаток
****

Группа: Пользователи
Сообщений: 419
Пол: Мужской

Репутация: -  6  +


klem ,если сортировать ,то сортировать по отношению цена/вес ,а не просто по цене.

program kopilka;
var v,vk,n,i,j : longint;
b : array[1..100,1..2]of longint;
a : array[0..10000]of longint;

procedure init;
begin
read(vk,v,n);
for i := 1 to n do
read(b[i,1],b[i,2]);
end;

function min(a,b : longint):longint;
begin
if a < b then min := a else min := b;
end;

procedure solve;
begin
v := v - vk;
a[0] := 0;
for i := 1 to v do a[i] := maxlongint - 50001;
for i := 1 to n do
for j := 0 to v do
if j + b[i,2] <= v then
a[j + b[i,2]] := min(a[j + b[i,2]],a[j] + b[i,1]);
end;

procedure out;
begin
if a[v] = maxlongint - 50001 then write('no')
else writeln(a[v]);
end;

begin
init;
solve;
out;
end.


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 7:30
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"