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

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

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

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

31.01.2014, 18:20. Просмотров 562. Ответов 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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.01.2014, 18:20     Сократить код. Задача про туриста
Посмотрите здесь:

Сократить код. Задача про сравнение символов - C++
набросал решение вышесказаной задачи вот код #include &lt;fstream&gt; main(int k){ std::fstream i(&quot;input.txt&quot;),o(&quot;output.txt&quot;, 2); ...

Сократить код, переделав if - C++
#include &lt;iostream&gt; #include &lt;math.h&gt; #pragma hdrstop #pragma argsused using namespace std; int main(int argc, char* argv) ...

Крестики нолики(сократить код) - C++
а как в крестиках ноликах можно заменить проверку двух подряд крестиков? //////////////////////HORIZONTAL/////////////// if(a==a &amp;&amp;...

Сократить код на два символа - C++
сокртить код #include &lt;fstream&gt; main(int n) { std::fstream I(&quot;input.txt&quot;), O(&quot;output.txt&quot;, 2); I&gt;&gt;n; O&lt;&lt;(n &lt;=0 ? (n - n*n) / 2...

Можно ли еще сократить код? - C++
Есть программа, которая должна считать данные из файла input.txt и записать ответ в фаил output.txt. Программа должна сложить 2 числа не...

сократить код, добавить функцию - C++
Есть код, замены местами столбцов с min и max элементами, нужно добавить больше функций, и миксимально его сократить... что можно...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
23253 / 15244 / 4445
Регистрация: 22.10.2011
Сообщений: 27,132
Записей в блоге: 4
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
401 / 267 / 37
Регистрация: 11.12.2010
Сообщений: 1,134
Завершенные тесты: 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
401 / 267 / 37
Регистрация: 11.12.2010
Сообщений: 1,134
Завершенные тесты: 1
31.01.2014, 22:41     Сократить код. Задача про туриста #6
Цитата Сообщение от костя666674555 Посмотреть сообщение
дело в том что на сайте где эта задача производительность не важна важен только размер кода
??? Скомпилированный код вес от этого не изменит.
Если действительно нужен размер то пиши в Ассемблере. (как в демосцене)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.01.2014, 22:52     Сократить код. Задача про туриста
Еще ссылки по теме:

Сократить код до 101 - 120 символов - C++
есть задача ! есть код #include &lt;fstream&gt; int main(){ std::fstream q(&quot;input.txt&quot;),o(&quot;output.txt&quot;,2); int n,a,i,j,s=0; q&gt;&gt;n; ...

Скажите, пожалуйста, возможно ли код сократить еще? - C++
Вот код моей программы. #include &lt;fstream&gt; int a,b,c; main(){ std::fstream i(&quot;input.txt&quot;),o(&quot;output.txt&quot;, 2); i&gt;&gt;a&gt;&gt;b&gt;&gt;c; ...

Сократить код ( Вырубка деревьев (Время: 1 сек. Память: 16 Мб Сложность: 46%) - C++
всем привет решил написать код от 24-ой задачи с ******** вот код #include &lt;fstream&gt; int main(){ std::fstream...

Реализовать алгоритм передвижения туриста по городам - C++
Добрый день ребята программисты! Я сегодня хочу обратится к вам за помощь в одной задачи! Предположим что это фотография...


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

Или воспользуйтесь поиском по форуму:
костя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     Сократить код. Задача про туриста
Ответ Создать тему
Опции темы

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