Advertisement
Guest User

BANHCHUNG

a guest
Mar 24th, 2019
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 1.08 KB | None | 0 0
  1. var a:array[0..1000000] of longint;
  2.     i,j,m,n:longint;
  3. procedure sort(l,r: longint);
  4.     var
  5.         i,j,x,y: longint;
  6.     begin
  7.         i:=l;
  8.         j:=r;
  9.         x:=a[(l+r) div 2];
  10.         repeat
  11.             while a[i]<x do
  12.                 inc(i);
  13.             while x<a[j] do
  14.                 dec(j);
  15.             if not(i>j) then
  16.                 begin
  17.                     y:=a[i];
  18.                     a[i]:=a[j];
  19.                     a[j]:=y;
  20.                     inc(i);
  21.                     j:=j-1;
  22.                 end;
  23.         until i>j;
  24.         if l<j then
  25.             sort(l,j);
  26.         if i<r then
  27.             sort(i,r);
  28.     end;
  29. begin
  30.     // assign(input,'banhchung.inp');
  31.     // reset(input);
  32.     // assign(output,'banhchung.out');
  33.     // rewrite(output);
  34.     readln(n,m);
  35.     for i:=1 to m do
  36.         begin
  37.         readln(a[i]);
  38.         if a[i]=n then
  39.             begin
  40.                 write(n);
  41.                 halt;
  42.             end;
  43.         end;
  44.     sort(1,m);
  45.     if a[1]>n then
  46.         begin
  47.             write(0);
  48.             halt;
  49.         end;
  50.     i:=1;
  51.     j:=m;
  52.     while (a[i]+a[j]>n) and (i<>j-1) do
  53.         dec(j);
  54.     while (a[i]+a[j]>n) and (i+1<>j) do
  55.         inc(i);
  56.     if a[i]+a[j]>n then
  57.         begin
  58.             for j:=j to m do
  59.                 if a[j]>n then exit;
  60.             if a[j]>n then dec(j);
  61.             a[i]:=0;
  62.         end;
  63.     write(a[i]+a[j]);
  64. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement