1) Считываешь 2 числа как рядок, и идешь циклом с 3 переменными (i,j,k). Выбираешь максимальное среди первого рядка [i] символа и второго рядка j символа. То что вибрал вставляешь в рядок ответа символ [k] и увеличиваешь k и то что выбрал. И еще сделай условие, если i(j)>рядок1(2).size() выбирать второй(1). Если оба кончились - закончить цыкл.
2) Либо бинарным поиском (если знаешь), либо просто моделировать (цыкл пока n>0 ans+1 n-k; ans+1 n-m
3) Cоздаешь 2 масива 107*107 , и считываешь таблицу.
Если считал 1 - масив1[i][j]=масив[i-1][j]+1 масив 2[i][j]=масив2[i][j-1]+1. Если масив1[i][j] =2 и масив2[i][j]=2 ans =1; закончить цыкл. Иначе ничего.
Если считал 0 - масив1[i][j]=0; масив2[i][j]=0;
После этого выводить если анс = 1 - Вывести No если анс = 0 вывести Yes