Решение задачи Двойная матрица с Codeforces

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


Вам даны две матрицы с размерами n×m, содержащие целые числа. Последовательность целых чисел строго возрастает, если каждое следующее число больше предыдущего. Строка строго возрастает, если все числа слева направо строго возрастают. Столбец строго возрастает, если все числа сверху вниз строго возрастают. Матрица возрастает, если все строки строго возрастают и все столбцы строго возрастают.

Код

#include <bits/stdc++.h>

using namespace std;

int main()
{
    long long n, m, temp;
    cin >> n >> m;
    vector<long long> t(m + 1);
    vector<vector<long long> > a;
    vector<vector<long long> > b;
    a.push_back(t);
    b.push_back(t);
    for(int i = 0; i < n; ++i){
        t.clear();
        t.push_back(0);
        for(int j = 0; j < m; ++j){
            cin >> temp;
            t.push_back(temp);
        }
        a.push_back(t);
    }
    for(int i = 0; i < n; ++i){
        t.clear();
        t.push_back(0);
        for(int j = 0; j < m; ++j){
            cin >> temp;
            t.push_back(temp);
        }
        b.push_back(t);
    }
    for(int i = 1; i < n + 1; ++i){
        for(int j = 1; j < m + 1; ++j){
            if(a[i][j] > b[i][j])
                swap(a[i][j], b[i][j]);
        }
    }
  
    for(int i = 1; i < n + 1; ++i){
        for(int j = 1; j < m + 1; ++j){
            if(a[i][j] <= a[i][j - 1] || a[i][j] <= a[i - 1][j]){
                cout << "Impossible";
                return 0;
            }
            if(b[i][j] <= b[i][j - 1] || b[i][j] <= b[i - 1][j]){
                cout << "Impossible";
                return 0;
            }
        }
    }

    cout << "Possible";
    return 0;
}

         

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


Код

def main():
	n,m = map(int,  input().split())
	m1 = [list(map(int, input().split()))for _ in range(n)]
	m2 = [list(map(int, input().split()))for _ in range(n)]

	for i in range(n):
		for j in range(m):
			m1[i][j],m2[i][j] = sorted([m1[i][j],m2[i][j]])
	for i in range(n):
		for j in range(1, m):
			if m1[i][j] <= m1[i][j - 1] or m2[i][j] <= m2[i][j - 1]:
				return "Impossible"
	for j in range(m):
		for i in range(1, n):
			if m1[i][j] <= m1[i - 1][j] or m2[i][j] <= m2[i - 1][j]:
				return "Impossible"
	return "Possible"
print(main())

         

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




Комментарии

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