- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
#include <iostream>
#include <cstdio>
#include <cstdlib>
using namespace std;
int main()
{
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
long x1, x2, x3;
cin >> x1 >> x2 >> x3;
if(x1 == 0 && x2 == 0 && x3 == 0){
cout << 0 << endl;
exit(EXIT_SUCCESS);
}
(x1 != 0) ? cout << x1 : cout << "";
(x2 != 0) ? (x2 > 0 && x1 != 0) ? (x2 == 1) ? cout << "+x" : cout << '+' << x2 << 'x' : (x2 == -1) ? cout << "-x" : (x2 == 1) ? cout << 'x' : (x2 == -1) ? cout << "-x" : cout << x2 << 'x' : cout << "";
(x3 != 0) ? (x3 == 1) ? cout << 'y' : (x3 == -1) ? cout << "-y" : (x2 == 0 && x1 == 0) ? cout << x3 << 'y' : (x3 > 0) ? (x3 == 1) ? cout << "+y" : cout << '+' << x3 << 'y' : (x3 == -1) ? cout << "-y" : cout << x3 << 'y' : cout << "";
cout << endl;
return 0;
}
Задача № 277 на acmp.ru. Решил "не писать много кода"
[зануда-mode]
- using namespace.
- Какого хрена переменные называются x1, x2 и x3, если в условии они a, b, c?
[/зануда-mode]
Ну да, конечно, в коде на три с половиной строчки, зачем нам определять пространство имён? Лучше, конечно, потрхацца с std:: перед каждой перменной.
Чтоб плохому не учился. А то в коде на три с половиной строчки привыкнут писать using namespace std, а потом в нормальной проге по-инерции эту срань продолжают юзать. Да еще и в header'ах.
<<Спустя 2 минуты и тонны недовольства>>
Ну ебать, задача века. Ты нахуя суда пришел вообще? Это не смешно - это страшно. Вы самое слабое звено - прощайте
Прошу всех встать, суд идёт!
> Вы самое слабое звено - прощайте
Зря ты так. Себя в школе вспомни.
хотя я вру, да
Если бы было "я курю. люблю школьниц", можно было бы спетросянить в ответ...
Забыл прокомментировать
Красиво. Ещё бы скобки убрать. Хотел плюсануть, да нет кармы на этом сайте.
Интересно исправляется проблема строгой типизации, надо запомнить хак.
Я, старый и больной человек, спустя джва часа и тонны недовольства публикую наконец ссылку, чтобы её более никто не искал.
А задача хорошо, годно составлена. Начинаешь читать, думаешь "ой, надо учесть то и это", а потом видишь в конце подробное ТЗ и радуешься.
http://www.youtube.com/watch?v=xOrgLj9lOwk
Да еще и юнит-тесты в режиме чёрного ящика есть.
Хм, а как ты его с сервера упёр, чтобы рассмотреть?
Сейчас подеремся
Сколько раз нужно было обновить страничку, чтобы написать все комментарии к посту?
Дано: пост и дерево комментариев, для каждого комментария известен его создатель и дата создания.
Примеры:
Чтобы ответить на пост, страницу надо обновить. Чтобы ответить на комментарий, которого нет на странице, страницу надо обновить. Отвечать можно на всё, что видишь, не обновляя.
Пример 1: если пост прокомментировало N пользователей, каждый из них обновит страницу не менее 1 раза
Пример 2: чтобы ответить на свой новый комментарий, не надо перезагружать страницу; если обновить страницу, можно оставить сколько угодно комментариев к тому, что загрузилось.
Пример 3: чтобы ответить на комментарий, его надо прочитать. В примере было 2 пользователя, т.е. минимум 2 обновления страницы. xxx должен прочитать комментарий yyy, чтобы обновить его => лишнее обновление.
Примеры 4 и 5: суперпозиция примеров 2 и 3. Казалось бы (спасибо примеру 3), иерархия комментариев определяет количество обновлений (пример 4), но если писать по 2 комментария за раз, то же дерево комментариев строится за меньшее количество обновлений (пример 5).
yyy: yyyy!
xxx: да.
// 3 раза
ну 2 же раза
Так два раза. xxx пришёл, обновил, написал; yyy пришёл, обновил, написал, пока xxx долго писал свои комментарии; xxx написал.
А так три. xxx пришёл, обновил, написал; yyy пришёл, обновил, увидел сообщение xxx написал в ответ; xxx обновил, увидел сообщение yyy, написал в ответ.
Если есть алгоритм проще, который даёт два раза - в студию его.
P.S. Впрочем, можно эти понятия разделить и решить каждую из двух получившихся задач.
а если различит, то весь сок в group, надо описать его строение.
нужно перед этим удалить ответы одного юзера с одним родительским узлом кроме первого.
Отправка формы на нужную страницу даёт ноль раз:
суммарное число загрузок
Алгоритм 1 (ops: O(Ncomm * (log(Ncomm) + log(Nusers) * (log(Ncomm) | 1 в зависимости от нумерации))), mem: O(Nusers)):
0. Число обновлений (ЧО) устанавливаем в ноль.
1. Сортируем список комментариев по времени добавления (или ID комментария)
2. Для каждого пользователя устанавливаем последний просмотренный комментарий пользователя (ППКП) в ноль (ID комментариев начинаются с 1)
2. Для каждого комментария (в хронологическом порядке):
2.1. Если ППКП == 0, то этот пользователь открыл страницу в первый раз => ЧО := ЧО + 1, ППКП := ID текущего комментария.
2.2. Если у комментария есть комментарий родитель, который написал другой пользователь, причём его ID больше ППКП, то ЧО := ЧО + 1, ППКП := ID текущего комментария.
3. Возвращаем ЧО.
При недостатке памяти (ops: O(Ncomm * (log(Ncomm) + Nusers * (log(Ncomm) | 1 в зависимости от нумерации))), mem: O(1)):
0. ЧО := 0
1. Сортируем список комментариев по времени добавления (или ID комментария)
2. Определяем диапазон ID пользователей
3. Для каждого ID пользователя (ПИД)
3.1. Заводим переменную ППКП := 0
3.2. Для каждого комментария
3.2.1. Если его написал ПИД,
3.2.1.1. Если ППКП == 0, то этот пользователь открыл страницу в первый раз => ЧО := ЧО + 1, ППКП := ID текущего комментария.
3.2.1.2. Если у комментария есть комментарий родитель, который написал другой пользователь, причём его ID больше ППКП, то ЧО := ЧО + 1, ППКП := ID текущего комментария.
4. Возвращаем ЧО.
http://ideone.com/e5xBHk - без монад.
Если что можно, убрать .filter... в строчке 57 - для включения реального примера, ответ на который неизвестен.