Поделитесь своими знаниями, ответьте на вопрос:
В городе, где живет Петя имеется N перекрестков, некоторые из которых соединены улицами (каждая улица соединяет ровно два перекрестка В этом городе имеется только один вид общественного транспорта – автобус. Правда, имеется целых два кольцевых автобусных маршрута. Маршрут можно задать в виде последовательности перекрестков, по которым он проходит, при этом после последнего перекрестка автобус едет к первому. В каждом маршруте любой перекресток встречается не более одного раза.Пете повезло, он живет на единственной улице в городе, по которой ходит оба маршрута. Выясните, на какой улице живет Петя.Входные данныеПервая строка входного файла содержит число N – количество перекрестков в городе, в котором живет Петя (3 <= N <= 30000). Следующие две строки содержат описание маршрутов в следующем формате: сначала идет Ki – количество перекрестков, через которые проходит маршрут (3 <= Ki <= N), затем перечислены эти перекрестки в том порядке, в котором их посещает автобус соответствующего маршрута. Числа в строках разделены одним или несколькими пробелами.Выходные данныеВыведите в выходной файл номера перекрестков, которые соединяет улица, на которой живет Петя, в возрастающем порядке.Примерывходные данные 6 6 1 2 3 4 5 6 6 1 5 3 6 4 2выходные данные 1 2
// PascalABC.NET 3.0, сборка 1073
const
sb='bcdfgjklmnpqrstvwxz';
s='Computer programming is a process of computer programs creation';
var
i,n:integer;
s1,sn,t:string;
begin
i:=1;
while s[i]<>' ' do Inc(i);
s1:=Copy(s,1,i-1);
n:=Length(s); i:=n;
while s[i]<>' ' do Dec(i);
sn:=Copy(s,i+1,n-i);
t:='';
for i:=1 to Length(s1) do
if Pos(s1[i],sb)>0 then t:=t+s1[i];
s1:=t;
t:='';
for i:=1 to Length(sn) do
if Pos(sn[i],sb)>0 then t:=t+sn[i];
sn:=t;
t:='';
for i:=1 to Length(s1) do
if Pos(s1[i],sn)>0 then
if Pos(s1[i],t)=0 then t:=t+s1[i];
for i:=1 to Length(t) do Write(t[i],' ');
Writeln
end.
Тестовый прогон:
t r
2. "Нормальное" решение
// PascalABC.NET 3.0, сборка 1073
const
sb='bcdfgjklmnpqrstvwxz';
s='Computer programming is a process of computer programs creation';
begin
var a:=s.ToWords(' ');
a[0].Intersect(a[a.Length-1]).Where(x->Pos(x,sb)>0).Println(',')
end.
Тестовый прогон:
t,r