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

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

is there something special abt test case 9
Послано alekh 31 июл 2004 16:29
my program works well for the first 8 . gives a WA on 9.
i m using binary search . the code follows

#include<iostream>
#include<stdlib.h>

using namespace std;

int binarysearch(long num,int a[],int lb,int ub,int order) {
  //cout<<"\nbinarysearch "<<lb<<" "<<ub<<" "<<num<<" "<<order;
  //cout<<"\nhi";
  int mid = (lb + ub)/2;
  if(lb >= ub)
    return -1;
  if(a[mid] == num)
    return mid;
  else {
    if(a[mid] < num) {
      if(order == 1)
    binarysearch(num,a,mid+1,ub,order);
      else
    binarysearch(num,a,lb,mid-1,order);
    }
    else {
      if(order == -1)
    binarysearch(num,a,mid+1,ub,order);
      else
    binarysearch(num,a,lb,mid-1,order);
    }
  }
}

main() {

  int n1,n2;
  int a1[50000],a2[50000];

  cin>>n1;
  for(int i = 0;i < n1;i++)
    cin>>a1[i];
  cin>>n2;
  for(int i = 0;i < n2;i++)
    cin>>a2[i];
//      cout << "the last number in a2 is " << a2[n2-1] << endl;
//    cout << "n1 and n2 are " << n1 << " and " << n2 << endl;

  if(a1[n1-1]+a2[0] < 10000) {
    cout<<"NO";
//    cout << "no because greatests sum < 10000" << endl;
    exit(0);
  }
  if(a1[0] + a2[n2-1] > 10000) {
    cout<<"NO";
//    cout << "no because smallests sum > 10000" << endl;
//    cout << "the smallests are " << a1[0] << " and " << a2[n2-1] << endl;
   exit(0);
  }

  if(n1 < n2) {
    for(int i = 0;i < n1;i++)
      if(binarysearch(10000-a1[i],a2,0,n2,-1) != -1) {
    cout<<"YES";
    exit(0);
      }
  }
  else {
    for(int i = 0;i < n2;i++)
      if(binarysearch(10000-a2[i],a1,0,n1,1) != -1) {
    cout<<"YES";
    exit(0);
      }
  }
  cout<<"NO";
//    cout << "no reason" << endl;
  return 0;
}
Re: is there something special abt test case 9
Послано Alatau 4 авг 2004 23:44
You do not have to realize binary search in this problem.
Use boolean vector from -32768 to 32767.

Edited by author 04.08.2004 23:45