- 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. Решил "не писать много кода"
bormand 21.09.2014 11:07 # 0
[зануда-mode]
- using namespace.
- Какого хрена переменные называются x1, x2 и x3, если в условии они a, b, c?
[/зануда-mode]
guest 23.09.2014 22:29 # 0
Ну да, конечно, в коде на три с половиной строчки, зачем нам определять пространство имён? Лучше, конечно, потрхацца с std:: перед каждой перменной.
bormand 24.09.2014 05:23 # 0
Чтоб плохому не учился. А то в коде на три с половиной строчки привыкнут писать using namespace std, а потом в нормальной проге по-инерции эту срань продолжают юзать. Да еще и в header'ах.
kegdan 21.09.2014 12:03 # −2
<<Спустя 2 минуты и тонны недовольства>>
Ну ебать, задача века. Ты нахуя суда пришел вообще? Это не смешно - это страшно. Вы самое слабое звено - прощайте
bormand 21.09.2014 12:26 # +3
Прошу всех встать, суд идёт!
> Вы самое слабое звено - прощайте
Зря ты так. Себя в школе вспомни.
kegdan 21.09.2014 12:41 # 0
1024-- 21.09.2014 18:49 # +1
kegdan 21.09.2014 19:03 # 0
хотя я вру, да
1024-- 21.09.2014 19:22 # 0
Если бы было "я курю. люблю школьниц", можно было бы спетросянить в ответ...
Забыл прокомментировать
Красиво. Ещё бы скобки убрать. Хотел плюсануть, да нет кармы на этом сайте.
Интересно исправляется проблема строгой типизации, надо запомнить хак.
kegdan 22.09.2014 10:55 # 0
bormand 22.09.2014 11:04 # +1
1024-- 21.09.2014 19:01 # 0
Я, старый и больной человек, спустя джва часа и тонны недовольства публикую наконец ссылку, чтобы её более никто не искал.
А задача хорошо, годно составлена. Начинаешь читать, думаешь "ой, надо учесть то и это", а потом видишь в конце подробное ТЗ и радуешься.
kegdan 21.09.2014 19:04 # 0
http://www.youtube.com/watch?v=xOrgLj9lOwk
bormand 21.09.2014 21:12 # 0
Да еще и юнит-тесты в режиме чёрного ящика есть.
kegdan 21.09.2014 22:32 # 0
bormand 22.09.2014 05:22 # 0
kegdan 22.09.2014 10:23 # 0
bormand 22.09.2014 10:38 # 0
kegdan 22.09.2014 10:51 # 0
bormand 22.09.2014 11:03 # +1
Хм, а как ты его с сервера упёр, чтобы рассмотреть?
kegdan 22.09.2014 11:13 # 0
bormand 22.09.2014 14:41 # +1
kegdan 22.09.2014 14:49 # 0
bormand 22.09.2014 14:56 # +1
kegdan 22.09.2014 14:57 # 0
Сейчас подеремся
bormand 22.09.2014 15:04 # +1
1024-- 22.09.2014 19:07 # 0
Сколько раз нужно было обновить страничку, чтобы написать все комментарии к посту?
Дано: пост и дерево комментариев, для каждого комментария известен его создатель и дата создания.
Примеры:
kegdan 22.09.2014 19:12 # 0
1024-- 22.09.2014 19:25 # 0
Чтобы ответить на пост, страницу надо обновить. Чтобы ответить на комментарий, которого нет на странице, страницу надо обновить. Отвечать можно на всё, что видишь, не обновляя.
Пример 1: если пост прокомментировало N пользователей, каждый из них обновит страницу не менее 1 раза
Пример 2: чтобы ответить на свой новый комментарий, не надо перезагружать страницу; если обновить страницу, можно оставить сколько угодно комментариев к тому, что загрузилось.
Пример 3: чтобы ответить на комментарий, его надо прочитать. В примере было 2 пользователя, т.е. минимум 2 обновления страницы. xxx должен прочитать комментарий yyy, чтобы обновить его => лишнее обновление.
Примеры 4 и 5: суперпозиция примеров 2 и 3. Казалось бы (спасибо примеру 3), иерархия комментариев определяет количество обновлений (пример 4), но если писать по 2 комментария за раз, то же дерево комментариев строится за меньшее количество обновлений (пример 5).
kegdan 22.09.2014 19:33 # 0
yyy: yyyy!
xxx: да.
// 3 раза
ну 2 же раза
1024-- 22.09.2014 19:37 # 0
Так два раза. xxx пришёл, обновил, написал; yyy пришёл, обновил, написал, пока xxx долго писал свои комментарии; xxx написал.
А так три. xxx пришёл, обновил, написал; yyy пришёл, обновил, увидел сообщение xxx написал в ответ; xxx обновил, увидел сообщение yyy, написал в ответ.
Если есть алгоритм проще, который даёт два раза - в студию его.
kegdan 22.09.2014 19:42 # 0
1024-- 22.09.2014 19:45 # 0
P.S. Впрочем, можно эти понятия разделить и решить каждую из двух получившихся задач.
kegdan 22.09.2014 20:10 # 0
1024-- 22.09.2014 20:18 # 0
а если различит, то весь сок в group, надо описать его строение.
kegdan 22.09.2014 20:25 # 0
нужно перед этим удалить ответы одного юзера с одним родительским узлом кроме первого.
1024-- 22.09.2014 20:29 # 0
1024-- 22.09.2014 19:47 # 0
Отправка формы на нужную страницу даёт ноль раз:
wvxvw 22.09.2014 20:24 # 0
1024-- 22.09.2014 20:27 # 0
1024-- 22.09.2014 20:37 # 0
суммарное число загрузок
1024-- 23.09.2014 15:46 # 0
Алгоритм 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. Возвращаем ЧО.
1024-- 23.09.2014 15:56 # 0
kegdan 24.09.2014 05:49 # 0
1024-- 24.09.2014 12:05 # 0
http://ideone.com/e5xBHk - без монад.
Если что можно, убрать .filter... в строчке 57 - для включения реального примера, ответ на который неизвестен.