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

Обсуждение задачи 1880. Собственные числа Psych Up

Time limit exceeded
Послано Kanatbek 12 июн 2012 08:18
po4emu u menia Time Limit Exceeded? (

Edited by author 12.06.2012 08:19
#include <iostream>
using namespace std;
int main()
{
 int a[4000],a2[4000],a3[4000],i,j,l,n,n2,n3,k=0;
 cin>>n;
 for(i=1;i<=n;i++)
 cin>>a[i];
                cin>>n2;
                          for(j=1;j<=n2;j++)
                               cin>>a2[j];
cin>>n3;
for(l=1;l<=n3;l++)
cin>>a3[l];
          for(i=1;i<=n;i++)
          {
              for(j=1;j<=n2;j++)
              {
                  for(l=1;l<=n3;l++)
                  {
                      if(a[i]==a2[j] && a[i]==a3[l]) k++;
                  }
              }
          }
cout<<k;
return 0;
}


Edited by author 12.06.2012 08:25
Re: Time limit exceeded
Послано Smilodon_am [Obninsk INPE] 13 июн 2012 12:40
Your algorithm has complexity O(N^3) while N = 4000. It is very long. Try to use binary search, then you will find solution with complexity O(N * logN * logN).
Re: Time limit exceeded
Послано Andrew Sboev [USU] 25 мар 2013 22:19
This problem can be solved by O(N) time... If you have a good hash function, of course
And O(N * log N) instead of yours O(N * log N * log N) using map.

Edited by author 25.03.2013 22:24