Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
костя666674555
-94 / 0 / 0
Регистрация: 02.01.2014
Сообщений: 78
#1

Сократить код. Задача про туриста - C++

31.01.2014, 18:20. Просмотров 544. Ответов 6
Метки нет (Все метки)

всем привет есть задача
Кликните здесь для просмотра всего текста
Турист
(Время: 1 сек. Память: 16 Мб Сложность: 22%)

Гена собирается на туристический слет учеников своей школы. В своем классе он был назначен ответственным за палатки. У себя дома он нашел 3 палатки: первая из них весит a1 килограмм и вмещает b1 человек, вторая весит a2 килограмм и вмещает b2 человек, третья весит a3 килограмм и вмещает b3 человек.

В классе Гены K человек. Выясните, может ли он выбрать палатки так, чтобы в них все могли поместиться. При этом учитывайте, что выбранные палатки должны суммарно весить не более W килограмм.
Входные данные

Первая строка входного файла INPUT.TXT содержит два целых числа: K и W (1 <= K <= 15, 1 <= W <= 30). Вторая строка содержит шесть целых чисел: a1, b1, a2, b2, a3, b3 (1 <= a1, a2, a3 <= 10, 1 <= b1, b2, b3 <= 15).
Выходные данные

В выходной файл OUTPUT.TXT выведите YES, если палатки указанным образом выбрать можно, и NO в противном случае.
Примеры
№ INPUT.TXT OUTPUT.TXT
1 10 10
5 5 6 6 4 5 YES
2 10 10
5 5 6 6 7 7 NO

есть код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <fstream>
main(){
std::fstream q("input.txt"),o("output.txt", 2);
int k, w;
q>> k >> w;
int a[3][2];
for (size_t i = 0; i < 6; ++i)
{
q>> a[i][0] >> a[i][1];
}
for (size_t i = 1; i < 8; ++i)
{
int sum = 0, num = 0;
if (i & 1)
{
sum += a[2][0];
num += a[2][1];
}
if (i & 2)
{
sum += a[1][0];
num += a[1][1];
}
if (i & 4)
{
sum += a[0][0];
num += a[0][1];
}
if (num >= k && sum <= w)
{
o<< "YES";
return 0;
}
}
o<< "NO";
}
Размер кода: 329
помогите сократить

Добавлено через 2 минуты
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <fstream>
main(){
std::fstream q("input.txt"),o("output.txt", 2);
int k, w;
q>> k >> w;
int a[3][2];
for (size_t i = 0; i < 6; ++i)
{
q>> a[i][0] >> a[i][1];
}
for (size_t i = 1; i < 8; ++i)
{
int L= 0, M= 0;
if (i & 1)
{
L+= a[2][0];
M+= a[2][1];
}
if (i & 2)
{
L+= a[1][0];
M+= a[1][1];
}
if (i & 4)
{
L+= a[0][0];
M+= a[0][1];
}
if (M>= k && L<= w)
{
o<< "YES";
return 0;
}
}
o<< "NO";
}
Размер кода: 309

Добавлено через 4 минуты
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <fstream>
main(){
std::fstream q("input.txt"),o("output.txt", 2);
int k, w, a[3][2];
q>> k >> w;
for (size_t i = 0; i < 6; ++i)
{
q>> a[i][0] >> a[i][1];
}
for (size_t i = 1; i < 8; ++i)
{
int L= 0, M= 0;
if (i & 1)
{
L+= a[2][0];
M+= a[2][1];
}
if (i & 2)
{
L+= a[1][0];
M+= a[1][1];
}
if (i & 4)
{
L+= a[0][0];
M+= a[0][1];
}
if (M>= k && L<= w)
{
o<< "YES";
return 0;
}
}
o<< "NO";
}
Размер кода: 306

Добавлено через 25 секунд
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <fstream>
main(){
std::fstream q("input.txt"),o("output.txt", 2);
int k, w, a[3][2];
q>> k >> w;
for (size_t i = 0; i < 6; ++i)
{
q>> a[i][0] >> a[i][1];
}
for (size_t i = 1; i < 8; ++i)
{
int L= 0, M= 0;
if (i & 1)
{
L+= a[2][0];
M+= a[2][1];
}
if (i & 2)
{
L+= a[1][0];
M+= a[1][1];
}
if (i & 4)
{
L+= a[0][0];
M+= a[0][1];
}
if (M>= k && L<= w)
{
o<< "YES";
return 0;
}
}
o<< "NO";
}
Размер кода: 306
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
volvo
Супер-модератор
Эксперт Pascal
 Аватар для volvo
22346 / 14523 / 4119
Регистрация: 22.10.2011
Сообщений: 25,725
Записей в блоге: 3
31.01.2014, 18:52     Сократить код. Задача про туриста #2
костя666674555, ну вот тебе пища для размышлений:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <fstream>
main()
{
    std::fstream q("input.txt"),o("output.txt", 2);
    int k, w, a[3][2];
    size_t i = 0;
    q>> k >> w;
    for (; i < 6; ++i)
    {
        q>> a[i][0] >> a[i][1];
    }
    for (i = 1; i < 8; ++i)
    {
        int L= 0, M= 0,j=2,m=1;
        for(; j>=0; j--)
        {
            if(i&m)
            {
                L+=a[j][0];
                M+=a[j][1];
            }
            m <<=1;
        }
 
        if (M>= k && L<= w)
        {
            o<< "YES";
            return 0;
        }
    }
    o<< "NO";
}
269
костя666674555
-94 / 0 / 0
Регистрация: 02.01.2014
Сообщений: 78
31.01.2014, 21:52  [ТС]     Сократить код. Задача про туриста #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <fstream>
main()
{
    std::fstream q("input.txt"),o("output.txt", 2);
    int k, w, a[3][2];
    size_t i = 0;
    for ( q>> k >> w; i < 6; ++i)
    {
        q>> a[i][0] >> a[i][1];
    }
    for (i = 1; i < 8; ++i)
    {
        int L= 0, M= 0,j=2,m=1;
        for(; j>=0; j--)
        {
            if(i&m)
            {
                L+=a[j][0];
                M+=a[j][1];
            }
            m <<=1;
        }
 
        if (M>= k && L<= w)
        {
            o<< "YES";
            return 0;
        }
    }
    o<< "NO";
}
268

Добавлено через 17 секунд
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <fstream>
main()
{
    std::fstream q("input.txt"),o("output.txt", 2);
    int k, w, a[3][2];
    size_t i = 0;
    for ( q>> k >> w; i < 6; ++i)
    {
        q>> a[i][0] >> a[i][1];
    }
    for (i = 1; i < 8; ++i)
    {
        int L= 0, M= 0,j=2,m=1;
        for(; j>=0; j--)
        {
            if(i&m)
            {
                L+=a[j][0];
                M+=a[j][1];
            }
            m <<=1;
        }
 
        if (M>= k && L<= w)
        {
            o<< "YES";
            return 0;
        }
    }
    o<< "NO";
}
268
Kill100
 Аватар для Kill100
360 / 249 / 33
Регистрация: 11.12.2010
Сообщений: 1,072
Завершенные тесты: 1
31.01.2014, 22:00     Сократить код. Задача про туриста #4
Вот смысл сокращать размер кода?
Кто ни будь объясните мне
Надо гнаться за производительностью но не размером или я неправ?
костя666674555
-94 / 0 / 0
Регистрация: 02.01.2014
Сообщений: 78
31.01.2014, 22:33  [ТС]     Сократить код. Задача про туриста #5
ну не знаю

Добавлено через 1 минуту
дело в том что на сайте где эта задача производительность не важна важен только размер кода

Добавлено через 19 минут
дальше не представляю как сокращять

Добавлено через 12 секунд
дальше не представляю как сокращять
Kill100
 Аватар для Kill100
360 / 249 / 33
Регистрация: 11.12.2010
Сообщений: 1,072
Завершенные тесты: 1
31.01.2014, 22:41     Сократить код. Задача про туриста #6
Цитата Сообщение от костя666674555 Посмотреть сообщение
дело в том что на сайте где эта задача производительность не важна важен только размер кода
??? Скомпилированный код вес от этого не изменит.
Если действительно нужен размер то пиши в Ассемблере. (как в демосцене)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.01.2014, 22:52     Сократить код. Задача про туриста
Еще ссылки по теме:

Скажите, пожалуйста, возможно ли код сократить еще? C++
C++ Задача про метеостанции
Реализовать алгоритм передвижения туриста по городам C++
задача про МКАД C++
C++ Сократить код, переделав if

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
костя666674555
-94 / 0 / 0
Регистрация: 02.01.2014
Сообщений: 78
31.01.2014, 22:52  [ТС]     Сократить код. Задача про туриста #7
спс оч помог

Добавлено через 6 минут
как избавится от
C++
1
return 0;
Yandex
Объявления
31.01.2014, 22:52     Сократить код. Задача про туриста
Ответ Создать тему
Опции темы

Текущее время: 02:10. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru