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

Обсуждение задачи 1510. Порядок

How to get <0.02 sec.?
Послано Andrej Bourgasov 10 сен 2019 13:22
Hey guys,
how to get run time under 0.02s?
I implement O(n) solution, but my time is ~0.15s for CLang...
What optimisations do you use?
Re: How to get <0.02 sec.?
Послано Gilles Deleuze 10 сен 2019 14:29
I used fast I/O to get 0.031. There are faster input methods that use fwrite/fread while mine is based on getChar/writeChar. Perhaps using even faster I/O can get you to 0.015


  int n = readUInt();
  int el = readUInt();
  int cnt = 1;
  for (int i = 1; i < n; ++i) {
    int x = readUInt();
    if (x == el) {
      ++cnt;
    } else {
      --cnt;
    }
    if (!cnt) {
      el = x;
      cnt = 1;
    }
  }
  writeInt(el);

Edited by author 10.09.2019 14:33
Re: How to get <0.02 sec.?
Послано Gilles Deleuze 10 сен 2019 14:44
And yes. I got accepted in 0.015s using fread/fwrite IO and C language compiler (not C++)