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

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

Восстановить пароль Регистрация
 
костя666674555
-94 / 0 / 0
Регистрация: 02.01.2014
Сообщений: 78
31.01.2014, 18:20     Сократить код. Задача про туриста #1
всем привет есть задача
Кликните здесь для просмотра всего текста
Турист
(Время: 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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.01.2014, 18:20     Сократить код. Задача про туриста
Посмотрите здесь:

Крестики нолики(сократить код) C++
Можно ли еще сократить код? C++
C++ сократить код, добавить функцию
Сократить код. Задача про сравнение символов C++
C++ Сократить код, переделав if

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
volvo
Супер-модератор
 Аватар для volvo
21680 / 14153 / 3938
Регистрация: 22.10.2011
Сообщений: 25,010
Записей в блоге: 2
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
356 / 245 / 32
Регистрация: 11.12.2010
Сообщений: 1,060
Завершенные тесты: 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
356 / 245 / 32
Регистрация: 11.12.2010
Сообщений: 1,060
Завершенные тесты: 1
31.01.2014, 22:41     Сократить код. Задача про туриста #6
Цитата Сообщение от костя666674555 Посмотреть сообщение
дело в том что на сайте где эта задача производительность не важна важен только размер кода
??? Скомпилированный код вес от этого не изменит.
Если действительно нужен размер то пиши в Ассемблере. (как в демосцене)
костя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     Сократить код. Задача про туриста
Ответ Создать тему
Опции темы

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