cf100989b
http://codeforces.com/gym/100989/my
#include <cstdlib> #include <cctype> #include <cstring> #include <cstdio> #include <cmath> #include <algorithm> #include <vector> #include <string> #include <iostream> #include <sstream> #include <map> #include <set> #include <queue> #include <stack> #include <fstream> #include <numeric> #include <iomanip> #include <bitset> #include <list> #include <stdexcept> #include <functional> #include <utility> #include <ctime> #define PB push_back #define MP make_pair #define FOR1(n) for(int i=0;i<(n);++i) #define FOR2(l,h) for(int i=(l);i<=(h);++i) #define FOR3(h,l) for(int i=(h);i>=(l);--i) using namespace std; typedef vector<int> VI; typedef vector<string> VS; typedef vector<double> VD; typedef long long LL; typedef pair<int,int> PII; #define PI acos((double)-1) #define E exp(double(1)) #define K 1000000+9 char a[100],b[100]; int dp[100][100],n,m; bool us[100]; int main(void) { cin>>n>>m; for(int i=1; i<=n; i++) a[i]='a'+i-1; for(int i=0; i<=n; i++) for(int j=0; j<=m; j++) scanf("%d",&dp[i][j]); for(int i=1; i<=n; i++) for(int j=1; j<=m; j++) { if( dp[i][j]==dp[i-1][j-1]+1&&dp[i][j]!=max(dp[i-1][j],dp[i][j-1])) { if(!us[j]) {b[j]=a[i];us[j]=1;} else { char t=a[i]; for(int k=1; k<=n; k++)if(a[k]==t)a[k]=b[j]; for(int k=1; k<=m; k++)if(b[k]==t)b[k]=b[j]; } } } for(int i=1; i<=m; i++) if(!us[i])b[i]='z'; a[n+1]='\0',b[m+1]='\0'; cout<<a+1<<endl<<b+1<<endl; return 0; }
作者:weeping
出处:www.cnblogs.com/weeping/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。