Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- #define fi first
- #define se second
- #define pb push_back
- #define FOR(i,a,b) for(int i=(a);i<=(b);++i)
- #define FORS(i,a,b) for(int i=(a);i<(b);++i)
- #define PII pair<int,int>
- #define vpp vector<PII>
- #define all(x) x.begin(),b.end()
- #define SZ(x) ((int)(x).size())
- #define ll long long
- #define maxn 1005
- int n,m,sol[2][maxn],viz[maxn],aux,numb[3000],cnt=1;
- char mat[maxn][maxn];
- int eval(char s){
- if(s=='>') return 1;
- return (s=='<')?-1:0;
- }
- int main()
- {
- //freopen("pluton.in","r",stdin);
- //freopen("pluton.out","w",stdout);
- cin>>n>>m;
- FOR(i,1,n)
- FOR(j,1,m)
- cin>>mat[i][j];
- FOR(i,1,n){
- FOR(j,1,m)
- sol[0][i]+=eval(mat[i][j]);
- sol[0][i]+=1000;
- numb[sol[0][i]]=1;
- FOR(j,1,m)
- if(eval(mat[i][j])==0)
- sol[1][j]=sol[0][i],viz[j]=1;
- }
- FOR(i,1,m){
- aux=0;
- FOR(j,1,n)
- aux+=eval(mat[j][i]);
- if(viz[i]&&(aux+1000)!=sol[1][i]){
- cout<<"No";
- return 0;
- }
- sol[1][i]=aux+1000;
- numb[aux+1000]=1;
- }
- FOR(i,0,3000){
- if(numb[i]==1){
- FOR(j,1,n)
- if(sol[0][j]==i)
- sol[0][j]=cnt;
- FOR(j,1,m)
- if(sol[1][j]==i)
- sol[1][j]=cnt;
- cnt++;
- }
- }
- cout<<"Yes\n";
- FOR(j,1,n)
- cout<<sol[0][j]<<' ';
- cout<<'\n';
- FOR(j,1,m)
- cout<<sol[1][j]<<' ';
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement