比赛 树立信心的模拟赛 评测结果 AAAAAAAAAA
题目名称 凯伦和游戏 最终得分 100
用户昵称 Shirry 运行时间 0.015 s
代码语言 C++ 内存使用 1.29 MiB
提交时间 2017-09-01 20:36:15
显示代码纯文本
#include<cstdio>
#include<cstring>
#include<algorithm>
#define inf 1e9
using namespace std;
const int maxn=510;
bool flag=true;
int m,n,ans=0,row[maxn],col[maxn],s[maxn][maxn],g[maxn],h[maxn];//g shi hang h shi lie
void FindR(){
	for(int i=1;i<=n;i++){
		g[i]=inf;
		int j=1;
		while(j<=m){
			g[i]=min(g[i],s[i][j]);
			j++;
		}
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++)s[i][j]-=g[i];
		row[i]+=g[i],ans+=g[i];
	}
}
void FindC(){
	for(int i=1;i<=m;i++){
		h[i]=inf;
		int j=1;
		while(j<=n){
			h[i]=min(h[i],s[j][i]);
			j++;
		}
	}
	for(int j=1;j<=m;j++){
		for(int i=1;i<=n;i++)s[i][j]-=h[j];
		col[j]+=h[j],ans+=h[j];
	}
}

void Cal(){
	if(n<=m)FindR(),FindC();
	else FindC(),FindR();
	for(int i=1;i<=n;i++)
		for(int j=1;j<=m;j++)
			if(s[i][j])flag=0;
}
int main(){
	freopen("games.in","r",stdin);
	freopen("games.out","w",stdout);
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)scanf("%d",&s[i][j]);
	Cal();
	if(flag==true){
		printf("%d\n",ans);
		for(int i=1;i<=n;i++){
			if(row[i]){
				for(int j=1;j<=row[i];j++)printf("row %d\n",i);
			}
		}
		for(int j=1;j<=m;j++){
			if(col[j]){
				for(int i=1;i<=col[j];i++)printf("col %d\n",j);
			}
		}
	}
	else printf("-1\n");
	return 0;
}