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

Обсуждение задачи 1021. Таинство суммы

Time limit on Test 2 Help. (C++)
Послано Ivailo 15 авг 2013 18:12
Where do I have a problem?

I used binary search and got time limit on test 2. But when I use N*N1 speed I pass test 2 and get time limit on test 10.

Can you please check my code. I believe it is correct.


#include <iostream>

using namespace std;

bool binary_search (long* b , long a , long from ,long to)
{
    while (from != to)
    {
        long mid = (from + to )/2;
        if (b[mid] + a == 10000) return true;
        if (b[mid] + a > 10000)
        {
            from = mid;
        }
        if (b[mid] + a < 10000)
        {
            to = mid;
        }
    }
    return false;
}
int main ()
{
    long n , n1;
    long* a , *b;
    cin >> n;
    a = new long[n];
    for (int i =0 ; i < n ; i++)
    {
        cin >> a[i];
    }
    cin >> n1;
    b = new long[n1];
    for (int i =0 ; i < n1 ; i++ )
    {
        cin >> b[i];
    }
    bool tr = false;
    for (int i = 0 ; i < n ; i++)
    {
        tr = binary_search (b , a[i] , 0 , n1);
        if (tr) break;
    }
    if(tr) cout << "YES";
    else cout << "NO";
}
Re: Time limit on Test 2 Help. (C++)
Послано ძამაანთ [Tbilisi SU] 15 авг 2013 19:56
"Where do I have a problem?"
You've got TLE. That is a problem
Re: Time limit on Test 2 Help. (C++)
Послано Ivailo 16 авг 2013 12:36
Ok my bad. Why do I get TLE when I use binary, but don't get TLE when I use n1*n? Isn't binary faster?