Решение задачи Подстрочная сортировка с Codeforces

Без пояснения   Просмотров: 24


Заданы n строк. Каждая строка состоит из строчных букв латинского алфавита. Расположите (переупорядочите) строки в таком порядке, чтобы каждая строка содержала все строки, идущие перед ней, в качестве подстроки.

Строка a содержится в качестве подстроки в строке b, если в строке b можно выбрать несколько подряд идущих букв так, что они образуют строку a. Например, строка «for» содержится в качестве подстроки в строках «codeforces», «for» и «therefore», но при этом не содержится в качестве подстроки в строках «four», «fofo» и «rof».

Код

#include <iostream>
#include <algorithm>
#include <string>
#include <string.h>
using namespace std;
int a[101];
int qb[101];
int f(string a,string b)
{
	return a.length() < b.length();
}
int main()
{
	int n;
	cin >> n;
	string a[101];
	for(int y = 0;y < n;y++){
		cin >> a[y];
	}
	sort(a,a + n, f);
	int i = 0;
	
	for(int y = 1; y < n;y++)
	{
		if(a[y].find(a[y-1]) !=-1) {
            i++;
        }
	}
	
	if(i == n - 1)
	{
        cout << "YES" << endl;
        for(int y = 0; y < n; y++)
            cout << a[y] << endl;
	}
	else 
        cout << "NO";
	
}

         

Администратор Photo Автор: Администратор



Комментарии

Чтобы написать комментарии вам нужно войти в систему или зарегистрироваться