NKSGAME - VOI08 Trò chơi với dãy số

Tác giả: hieult

Ngôn ngữ: C++

#include <stdio.h>
//#include <conio.h>
void quickSort(long A[], long lower,long upper)
{
        long x = A[(lower + upper) / 2];
        long i = lower;
        long j = upper;
        do      {
                while(A[i] < x)
                        i ++;
                while (A[j] > x)
                        j --;
                if (i <= j)
                {
                     long tg=A[i];
                     A[i]=A[j];
                     A[j]=tg;   
                        i ++;
                        j --;
                }
        }while(i <= j);
        if (j > lower)
                quickSort(A, lower, j);
        if (i < upper)
                quickSort(A, i, upper);
}
main()
{
long n,a[100001],b[100001],Min=2000000000,x,y;      
scanf("%ld",&n);
  for(long i=1;i<=n;i++)
    scanf("%ld",&a[i]);
  for(long i=1;i<=n;i++)
    scanf("%ld",&b[i]);
quickSort(a,1,n);
quickSort(b,1,n);
x=1;y=n;
do
  {
  if(x==n&&a[x]+b[y]<0)
     {
     if(-(a[x]+b[y])<Min)
       Min=-(a[x]+b[y]);                        
     break;
     }
  else if(y==1&&a[x]+b[y]>0)
     {
     if(a[x]+b[y]<Min)
       Min=a[x]+b[y];                         
     break;
     }     
  else if(a[x]+b[y]<0)
     {
     if(-(a[x]+b[y])<Min)
       Min=-(a[x]+b[y]);  
     x++;
     }
  else if(a[x]+b[y]>0)
     {
     if(a[x]+b[y]<Min)
       Min=a[x]+b[y];  
     y--;
     }                                       
  else if(a[x]+b[y]==0)
     {
     Min=0;
     break;
     }
  }while(1);
printf("%ld",Min);
//getch();
}  
                           

Download