UVa : 200 (Rare Order)


অনেকগুলো string (array of characters) দেয়া থাকবে ।
character গুলোকে column-wise print করতে হবে
মানে, প্রথম কলাম প্রিন্ট করতে হবে, তারপর দ্বিতীয় কলাম, তারপর তৃতীয় .. এইভাবে
একটি character শুধুমাত্র একবারই প্রিন্ট হবে।

Sample input টা দেখি,
১ম কলাম এ কোন কোন characters আছে ? XZZZY
২য় কলাম এ কোন কোন characters আছে ? WXXXW
৩য় কলাম এ কোন কোন characters আছে ? YYWW
৪র্থ কলাম এ কোন কোন characters আছে ? X

আমরা এখন ১ম কলাম থেকে characters print করা শুরু করব,

১ম কলাম এ ছিল, XZZZY
একটি character শুধুমাত্র একবারই প্রিন্ট হবে।
তার মানে, ১ম কলাম এ আসলে আছে, XZY
৩ টা Z বাদ দিয়ে একটা Z রাখলাম, এবং এটা প্রিন্ট করে দিলাম
print : XZY

২য় কলাম এ ছিল, WXXXW
২য় কলাম এ আসলে আছে, WX
আমরা কিন্তু X একবার প্রিন্ট করেছিলাম, তাই আবার X প্রিন্ট করতে পারব না
শুধু প্রিন্ট করব,
print : W

৩য় কলাম এ ছিল, YYWW
৩য় কলাম এ আসলে আছে, YW
Yএবং W দুটোই আগে প্রিন্ট করা হয়েছে।

৪র্থ কলাম এ আছে, এটি আগেই প্রিন্ট করেছি।

তাহলে, আমাদের সম্পূর্ণ আউটপুট হবে,
XZYW

এখন এইখানে কিছু কথা আছে :

১. একটা করে ইনপুট নিলাম আর সেটা প্রসেস করে আউটপুট দিলাম
এই বুদ্ধি কিন্তু কাজে লাগবে না । প্রথমেই সব ইনপুট একবারে নিতে হবে
তারপর সেটা সেইভ করে রাখতে হবে।

২. C দিয়া করলে 2 dimensional character array নিতে হবে।
কিন্তু এখানে row size বলা নাই, column size বলা আছে।
ধরে নেয়া যেতে পারে, row size = 5000

৩. সবগুলা স্ট্রিং কিন্তু সমান না ।
কাজেই garbage value ‘র ব্যাপারে সর্তক থাকতে হবে

Critical input:
HELLO
ELLOH
EREREEEIE
W
ADFEEDE
OEREI
EEEIADFIOS
PAVMZVNZV
#

Critical output:
HEWAOPLRDFVIMZNS

Critical input:
TYKK
DCDDE
BMZOLWO
PCZL
TKKYOSWQ
ILUVL
#

Critical output:
TDBPIYCMKLZUOVEWSQ

 

#include
#include

int main ()
{
	char A [5000] [21], Temp[21];
	int I = 0, Len, N, J;
	int L[26] = {0};

	while (scanf("%s", Temp)){ // input taken in Temp

		if (Temp [0] == '#') // break condition
			break;

		Len = strlen (Temp);

		for (J = 0; J < Len; J++) // Array intialized
			A [I] [J] = Temp [J];

		while (J != 21) // avoid garbage value
			A [I] [J++] = 'a';
		I++;
	}

	for (J = 0; J < 21; J++){

		for (N = 0; N < I; N++){ 			if (A [N] [J] > 64 && A [N] [J] < 91)
				L [ (A [N] [J] - 65) ]++;

			if (L [ ( A [N] [J] - 65) ] == 1)
				printf("%c", A [N] [J]);
		}
	}

	printf("\n");

	return 0;
}

2 thoughts on “UVa : 200 (Rare Order)

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s