提出 #10569988


ソースコード 拡げる

#pragma warning (disable:4996)
#include"bits/stdc++.h"
#include<cassert>
#define int long long
#define MRE assert(0);
#define rep(i,n) for(int i=0;i<n;i++)
using namespace std;
const long long mod = 1000000007;
const long long inf = 1e17;
typedef pair<int, int> P;
struct edge {
	int to, id;
};
int a[105][105];
int match[205]; bool used[205];
vector<int>ans[205],ans2[205];
vector<int>G1[105][105];
vector<int>G[205];

void add_edge(int u, int v) {
	G[u].push_back(v);
	G[v].push_back(u);
}

bool dfs(int v) {
	used[v] = true;
	for (int i : G[v]) {
		int u = i, w = match[u];
		if (w < 0 || !used[w] && dfs(w)) {
			match[v] = u; match[u] = v; return true;
		}
	}
	return false;
}

void matching(int n) {
	rep(i, n)G[i].clear();
	rep(i, n) {
		rep(j, n) {
			if (G1[i][j].size())add_edge(i, n+j);
		}
	}
	memset(match, -1, sizeof(match));
	rep(i, n) {
		if (match[i] < 0) {
			memset(used, 0, sizeof(used));
			dfs(i);
		}
	}
	rep(i, n) {
		ans[i].push_back(G1[i][match[i] - n][0]);
		G1[i][match[i] - n].erase(G1[i][match[i] - n].begin());
	}
}

signed main() {
	int n, m; cin >> n >> m;

	rep(i, n) {
		rep(j, m) {
			cin >> a[i][j];
			G1[i][(a[i][j]-1)/m].push_back(a[i][j]);
		}
	}

	rep(i,m)matching(n);
	rep(i, n) {
		rep(j, m) {
			if (j)cout << ' '; cout << ans[i][j];
		}cout << endl;
	}
	rep(j, m) {
		vector<int>s;
		rep(i, n)s.push_back(ans[i][j]);
		sort(s.begin(), s.end());
		rep(i, n)ans2[i].push_back(s[i]);
	}
	rep(i, n) {
		rep(j, m) {
			if (j)cout << ' '; cout << ans2[i][j];
		}cout << endl;
	}
}

提出情報

提出日時
問題 D - Sorting a Grid
ユーザ Rho17
言語 C++14 (GCC 5.4.1)
得点 1100
コード長 1602 Byte
結果 AC
実行時間 33 ms
メモリ 6912 KiB

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 1100 / 1100
結果
AC × 2
AC × 27
セット名 テストケース
Sample sample01.txt, sample02.txt
All sample01.txt, sample02.txt, in01.txt, in02.txt, in03.txt, in04.txt, in05.txt, in06.txt, in07.txt, in08.txt, in09.txt, in10.txt, in11.txt, in12.txt, in13.txt, in14.txt, in15.txt, in16.txt, in17.txt, in18.txt, in19.txt, in20.txt, in21.txt, in22.txt, in23.txt, sample01.txt, sample02.txt
ケース名 結果 実行時間 メモリ
in01.txt AC 20 ms 3584 KiB
in02.txt AC 24 ms 4096 KiB
in03.txt AC 26 ms 4224 KiB
in04.txt AC 7 ms 1280 KiB
in05.txt AC 6 ms 1280 KiB
in06.txt AC 7 ms 1408 KiB
in07.txt AC 5 ms 1280 KiB
in08.txt AC 9 ms 2176 KiB
in09.txt AC 6 ms 1408 KiB
in10.txt AC 19 ms 3584 KiB
in11.txt AC 18 ms 3712 KiB
in12.txt AC 32 ms 6784 KiB
in13.txt AC 9 ms 1664 KiB
in14.txt AC 11 ms 2304 KiB
in15.txt AC 8 ms 1536 KiB
in16.txt AC 5 ms 1280 KiB
in17.txt AC 6 ms 1408 KiB
in18.txt AC 6 ms 1792 KiB
in19.txt AC 33 ms 6912 KiB
in20.txt AC 33 ms 6912 KiB
in21.txt AC 33 ms 6912 KiB
in22.txt AC 27 ms 4352 KiB
in23.txt AC 1 ms 512 KiB
sample01.txt AC 1 ms 512 KiB
sample02.txt AC 1 ms 512 KiB