Cod sursa(job #634840)

Utilizator VisuianMihaiMihai Visuian VisuianMihai Data 17 noiembrie 2011 15:19:11
Problema Subsir crescator maximal Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <fstream>
#include <string>
using namespace std;
ifstream fin("text3.in");
ofstream fout("text3.out");
string a[1000];

int L[1000];
int t[1000];

void Write(int);

int main()
{
	int n = 0, i = 0;
	
	while ( fin >> a[n] )
		n++;

	fout << n << '\n';
	
	for ( int i = 0; i < n; ++i )
	{
		L[i] = 1;
		for ( int j = 0; j < i; ++j )
		{
			int k = a[j].size();
			if ( a[j][k-1] == a[i][0] && 
				 L[i] < L[j] + 1 )
			{
				L[i] = L[j] + 1;
				t[i] = j;
			}
		}
	}
	
	int maxim = 0;
	int p = 0;
	for (int i = 0; i < n; ++i )
		if ( L[i] > maxim )
		{
			maxim = L[i];
			p = i;
		}
	fout << n - maxim << '\n';	
	Write(p);	
	fin.close();		
	fout.close();
	return 0;
}

void Write(int i)
{
	if ( !i ) return;
	Write(t[i]);
	fout << a[i] << '\n';
}