ENG  RUSTimus Online Judge
Online Judge
Задачи
Авторы
Соревнования
О системе
Часто задаваемые вопросы
Новости сайта
Форум
Ссылки
Архив задач
Отправить на проверку
Состояние проверки
Руководство
Регистрация
Исправить данные
Рейтинг авторов
Текущее соревнование
Расписание
Прошедшие соревнования
Правила
вернуться в форум

Обсуждение задачи 1915. Руины титанов: воссоздание былого

Guys, I accpeted but really cheated.... :-))
Послано Sanatbek_Matlatipov 13 сен 2015 21:12
I used Java: The following I did.
1. Declare Stack<Integer>.
like this:         Stack<Integer> st = new Stack<Integer>();
                   boolean ok = false; <--// this boolean is tricky.. :))
2. Then, I iterate from 1 to n init i read X and i checked three given if statements in input. They are:
1.if(x>0){st.push(x);}
2.if(x==-1){pw.println(st.pop());}
3.if(x==0){
       int len = st.size();
       if(2*len<=n){
                st.addAll((Collection) st.clone());
    } else{
           if(!ok){
// here If you don't use this if statement you will have Memory Limit #42...
                      st.addAll((Collection<? extends Integer>) st.clone());
             ok=true;
            }
    }
}
Problem is copying all stack elements...
What I am really doing here is using stack clone() method. But When you do so many clones will have MemLimit. That's why I checked that my Stack size and its copies are more than N (2*len>n) then I should copy the whole stack one time not more.
And I am thinking that above code worked because <b<stack size wansn't big enough when I cloned last time....

Sorry If I am mistaken and poor english. But this code AC ...