Cod sursa(job #1355027)

Utilizator NadoluBogdanNadolu Bogdan NadoluBogdan Data 22 februarie 2015 12:15:31
Problema Convertor Scor 50
Compilator java Status done
Runda rosedu_cdl_2015 Marime 2.5 kb
import java.io.FileInputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import java.util.StringTokenizer;
import java.util.Vector;

class Pair
{
	String str1, str2;
	
	public Pair (String str1, String str2)
	{
		this.str1 = str1;
		this.str2 = str2;
	}
}

class Main
{

	List<Pair> vct = new ArrayList<Pair>();
	
	public Main (String[] s1, String[] s2, int lung)
	{
		for (int i = 0; i < lung; i++)
		{
			Pair p = new Pair(s1[i], s2[i]);
			vct.add(p);
		}
	}
	
	public static void main (String[] args) throws IOException
	{
		Scanner reader = new Scanner(new FileInputStream("convertor.in"));
		PrintWriter writer = new PrintWriter("convertor.out");
		
		String all = new String();
		
		List<Main> convs = new ArrayList<Main>();
		
		try {
	        StringBuilder sb = new StringBuilder();
	        String line = "";
	        if (reader.hasNext())
	        {
	        	line = reader.next();
	        }
	        else
	        {
	        	writer.close();
	        	return;
	        }
	        
	        if (!reader.hasNext())
	        {
	        	sb.append(line);
	        }
	        
	        while (reader.hasNext()) {
	            sb.append(line);
	            sb.append(" ");
	            line = reader.next();
	        }
	        all = sb.toString();
	    } finally {
	        reader.close();
	    }
		
		StringTokenizer st1 = new StringTokenizer (all, "{}[]");
		while (st1.hasMoreTokens())
		{
			StringTokenizer st2 = new StringTokenizer (st1.nextToken(), ",\n");
			String[] s1 = new String[100000];
			String[] s2 = new String[100000];
			int lung = 0;
			int parity = 0, len1 = 0, len2 = 0;
			while (st2.hasMoreTokens())
			{
				StringTokenizer st3 = new StringTokenizer (st2.nextToken(), ":\"");
				
				while (st3.hasMoreTokens())
				{
					String aux = st3.nextToken();
					if (aux.trim().length() > 0)
					{
						if (aux.indexOf(" ") == 0)
						{
							aux = aux.trim();
						}
						if (parity % 2 == 0)
						{
							s1[len1++] = aux;
						}
						else
						{
							s2[len2++] = aux;
						}
						parity ++;
						lung = len1;		
					}
				}
			}
			
			if (lung != 0)
			{	
				convs.add(new Main(s1, s2, lung));
			}
		}
		
		if (convs.isEmpty())
		{
			writer.close();
			return;
		}
		
		for (Pair p : convs.get(0).vct)
		{
			writer.write(p.str1 + ",");
		}
		writer.write("\n");
	
		for (Main cv : convs)
		{
			for (Pair p : cv.vct)
			{
				writer.write(p.str2 + ",");
			}
			writer.write("\n");
		}
		
		writer.close();
	}
}