Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

31.01.2014, 18:20. Просмотров 592. Ответов 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
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.01.2014, 18:20
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Сократить код. Задача про туриста (C++):

Сократить код. Задача про сравнение символов - 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++
сокртить код #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 элементами, нужно добавить больше функций, и миксимально его сократить... что можно...

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

6
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
24020 / 16001 / 4842
Регистрация: 22.10.2011
Сообщений: 28,319
Записей в блоге: 5
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
0
костя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
0
Kill100
406 / 272 / 37
Регистрация: 11.12.2010
Сообщений: 1,157
Завершенные тесты: 1
31.01.2014, 22:00 #4
Вот смысл сокращать размер кода?
Кто ни будь объясните мне
Надо гнаться за производительностью но не размером или я неправ?
0
костя666674555
-94 / 0 / 0
Регистрация: 02.01.2014
Сообщений: 78
31.01.2014, 22:33  [ТС] #5
ну не знаю

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

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

Добавлено через 12 секунд
дальше не представляю как сокращять
0
Kill100
406 / 272 / 37
Регистрация: 11.12.2010
Сообщений: 1,157
Завершенные тесты: 1
31.01.2014, 22:41 #6
Цитата Сообщение от костя666674555 Посмотреть сообщение
дело в том что на сайте где эта задача производительность не важна важен только размер кода
??? Скомпилированный код вес от этого не изменит.
Если действительно нужен размер то пиши в Ассемблере. (как в демосцене)
0
костя666674555
-94 / 0 / 0
Регистрация: 02.01.2014
Сообщений: 78
31.01.2014, 22:52  [ТС] #7
спс оч помог

Добавлено через 6 минут
как избавится от
C++
1
return 0;
0
31.01.2014, 22:52
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++
Добрый день ребята программисты! Я сегодня хочу обратится к вам за помощь в одной задачи! Предположим что это фотография...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

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