//utility pair
//字符串转数字
#include<iostream>
#include<cstdio>
#include<sstream>
#include<cctype>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<vector>
#include<set>
#include<map>
#include<queue>
#include<deque>
#include<utility>
using namespace std;
vector<string> v1;//保存字符
map<string,int> mp;//分配编号
map<pair<int,int>,int> st;
vector<string> v[15];//保存字符矩阵
int id(const string& s){
return mp[s];
}
int main(){
int r,c,r1,r2,c1,c2;
string s,x;
while(cin>>r>>c){
st.clear();
mp.clear();
v1.clear();
memset(v,0,sizeof(v));
getchar();
for(int i=0;i<r;i++){
getline(cin,s);
s+=',';
int cnt=0;
for(int j=0;j<c;j++){
x.clear();
while(s[cnt]!=',')
x+=s[cnt++];
cnt++;
v[j].push_back(x);
if(!mp.count(x)){
v1.push_back(x);
mp[x]=v1.size()-1;
}
}
}
for(int i=0;i<c;i++){
for(int j=i+1;j<c;j++){
st.clear();
for(int k=0;k<r;k++){
int x1=id(v[i][k]);
int x2=id(v[j][k]);
pair<int,int> p=make_pair(x1,x2);
if(st.count(p)){
c1=i+1,c2=j+1;
r1=st[p]+1,r2=k+1;
cout<<"NO"<<endl;
cout<<r1<<" "<<r2<<endl;
cout<<c1<<" "<<c2<<endl;
goto label;
}
else
st[p]=k;
}
}
}
cout<<"YES"<<endl;
label:;
}
return 0;
}
UVA - 1592
最新推荐文章于 2021-01-09 23:55:34 发布