Untitled

 avatar
unknown
pascal
4 years ago
1.2 kB
2
Indexable
Program BAI03;

Const 
  FILE_NAME = 'SUM';

Var 
  n: Byte;
  s: Word;
  sloved: Boolean;
  a: array Of Word;
  x: array Of Boolean;

Procedure HandleInput;

Var 
  i: Byte;

Begin
  Assign(input, FILE_NAME + '.INP');
  Reset(input);

  ReadLn(n, s);

  SetLength(x, n);
  SetLength(a, n);
  For i:=0 To n-1 Do
    Read(a[i]);

  Close(input);
End;

Procedure ProcessSolution;

Var 
  i: Byte;
  _sum: Word = 0;

Begin
  For i:=0 To n-1 Do
    If x[i] Then
      _sum := _sum + a[i];

  If _sum = s Then
    sloved := true;
End;

Procedure Run(i: Byte);

Var 
  b: Boolean;

Begin
  If sloved Then
    Exit;

  For b:=false To true Do
    Begin
      x[i] := b;
      If i = n-1 Then
        ProcessSolution
      Else
        Run(i + 1);
      If sloved Then
        Exit;
    End;
End;

Procedure HandleOutput;

Var 
  i: Byte;

Begin
  Assign(output, FILE_NAME + '.OUT');
  Rewrite(output);

  If Not sloved Then
    WriteLn('KHONG TIM DUOC')
  Else
    For i:=0 To n-1 Do
      If x[i] Then
        Write(a[i], #32);

  Close(output);
End;

Begin
  HandleInput;
  Run(0);
  HandleOutput;
End.
Editor is loading...