Submission

Status:

-P-PP-P-P-

Subtask/Task Score:

50/100

Score: 50

User: Poon

Problemset: ประลอง

Language: cpp

Time: 0.003 second

Submitted On: 2025-10-12 17:24:00

#include <stdio.h>
#include <stdlib.h>
int main()
{
  int n;
  scanf("%d",&n);
  int x[n];
  for(int k=0;k<n;k++)
  {
    scanf("%d",&x[k]);
  }
  long long diff=1e9;
  int best[n];
  int temp[n];
  for(int mask=0;mask<(1<<n);mask++)
  {
    for(int k=0;k<n;k++)
    {
      if(mask&(1<<k))
      {
        temp[k]=1;
      }
      else
      {
        temp[k]=0;
      }
    }
    int c=0;
    for(int k=0;k<n;k++)
    {
      if(temp[k]==0)  c++;
    }
    if(c==n/2||c==n-(n/2))
    {
      long long first=0;
      long long second=0;
      for(int k=0;k<n;k++)
      {
        if(temp[k]==0)
        {
          first+=x[k];
        }
        else
        {
          second+=x[k];
        }
      }
      int temp_diff=abs(first-second);
      if(temp_diff<diff)
      {
        diff=temp_diff;
        for(int k=0;k<n;k++)
        {
          best[k]=temp[k];
        }
      }
    }
  }
  int c=0;
  for(int k=0;k<n;k++)
  {
    if(best[k]==0)
    {
      c++;
    }
  }
  if(c==n/2)
  {
    for(int k=0;k<n;k++)
    {
      if(best[k]==0)
      {
        printf("%d ",x[k]);
      }
    }
    printf("\n");
    for(int k=0;k<n;k++)
    {
      if(best[k]==1)
      {
        printf("%d ",x[k]);
      }
    }
  }
  else
  {
    for(int k=0;k<n;k++)
    {
      if(best[k]==1)
      {
        printf("%d ",x[k]);
      }
    }
    printf("\n");
    for(int k=0;k<n;k++)
    {
      if(best[k]==0)
      {
        printf("%d ",x[k]);
      }
    }
  }
}