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

Кратчайший ввод - C++

Восстановить пароль Регистрация
 
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
20.05.2011, 21:00     Кратчайший ввод #1
Есть кусок кода
C++
1
2
3
4
5
6
7
//int i,x,d[200]; - в глобальном пространстве
std::fstream v("input.txt");
    v >> i;
    while(i--) {
        v >> x;
        d[x+100]++;
    }
Интересует, как его можно сжать еще сильнее=) (по количеству символов)
Использовать желательно iostream и fstream
Довольно долго думал, пришел примерно к таком варианту
C++
1
2
3
v>> i;
for(;i--;v >> x)
    d[x+100]++;
Но т.к. вначале x=0, а считывание идет в конце итерации, то последний элемент она пропускает, зато вначале лишний раз увеличивает 100ый.
Либо к такому
C++
1
2
for(;v;v >> x)
        d[x+100]++;//тут бы проигнорировать первых 2 числа как можно меньшим количеством кода..
Тоже лишний раз увеличивает, зато не надо первую переменную считывать=)
Думаю, что есть способ, но не могу до него додуматся=(
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.05.2011, 21:00     Кратчайший ввод
Посмотрите здесь:

C++ Кратчайший маршрут
Кратчайший путь в графе. C++
Кратчайший путь в графе(Рекурсия) C++
Кратчайший путь коня с++ C++
C++ Графы кратчайший путь !
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
lemegeton
 Аватар для lemegeton
2909 / 1338 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
20.05.2011, 22:07     Кратчайший ввод #2
Попробуйте использовать зопетую. )
C++
1
for(std::fstream v("input.txt"), v >> i; v.good(); v >> x, ++d[x + 100]);
З.Ы. Компиляторы сейчас хорошо оптимизируют, разницы в бинарном коде скорее всего не будет.
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
21.05.2011, 07:07  [ТС]     Кратчайший ввод #3
Дожал вот так
C++
1
2
3
std::fstream v("input.txt"); //в for'e не скомпилилось
    for(v >> i; i--;  d[x + 100]++)
        v >> x;
Мне не для компилятора нужно, просто есть один сайт с олимпиадными задачами, где критериями оценки служит количество символов в коде=)
Пока что 4 место, 1 символ до 3го=)

Добавлено через 40 минут
Таки нечего там больше сжимать, кроме ввода, который теоретически можно еще на 5 символов сжать=\
dampir_sanek
149 / 147 / 21
Регистрация: 09.02.2010
Сообщений: 407
21.05.2011, 09:55     Кратчайший ввод #4
Не по теме
diagon, подскажи, что то за сайтик такой?
diagon
21.05.2011, 09:56  [ТС]
  #5

Не по теме:

http://********/?main=tasks
з.ы. ты что-нибудь слышал о тэге [ off] ?)

dampir_sanek
149 / 147 / 21
Регистрация: 09.02.2010
Сообщений: 407
21.05.2011, 10:00     Кратчайший ввод #6
diagon,

Не по теме:

нет, теперь буду знать!)) Спасибо за сайтик!

Yandex
Объявления
21.05.2011, 10:00     Кратчайший ввод
Ответ Создать тему
Опции темы

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