OneCompiler

Segregate positive and negative elements in an array

197
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;

namespace OneCompiler
{
	public class Program
	{
		public static void Main(string[] args)
		{
			int n = int.Parse(Console.ReadLine());
			
			int[] arr = Array.ConvertAll(Console.ReadLine().Split(" "), new Converter<string,int>(StringToInteger));
			
			SegregateElements(arr);
			
			for (int i = 0; i < arr.Length; i++)
			{
			  Console.Write(arr[i] + " ");
			}
		}
		
		private static int StringToInteger(string s)
		{
		  return int.Parse(s);
		}
		
		private static int[] SegregateElements(int[] arr)
		{
		  int n = arr.Length;
		  
		  var positive = new List<int>();
		  var negative = new List<int>();
		  
		  foreach (var item in arr)
		  {
		    if (item >= 0)
		    {
		      positive.Add(item);
		    }
		    else
		    {
		      negative.Add(item);
		    }
		  }
		  
		  var i = 0;
		  var j = 0;
		  var k = 0;
		  
		  while (i < positive.Count && j < negative.Count)
		  {
		    if (k % 2 == 0)
		    {
		      arr[k] = positive[i];
		      i++;
		    }
		    else
		    {
		      arr[k] = negative[j];
		      j++;
		    }
		    
		    k++;
		  }
		  
		  while (i < positive.Count)
		  {
		    arr[k] = positive[i];
		    i++;
		    k++;
		  }
		  
		  while (j < negative.Count)
		  {
		    arr[k] = negative[j];
		    j++;
		    k++;
		  }
		  
		  return arr;
		}
	}
}