Gym 101308DDatabase 枚举
时间:2021-07-01 10:21:17
帮助过:35人阅读
<cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
const int maxn=
10000+
5;
char s[
105];
int n,m;
int now_c;
struct Row
{
int id;
char col[
15][
105];
} row[maxn];
void shit(
int index)
{
row[index].id=
index;
int i=
0, k =
0, t =
0;
while(s[i]!=
‘\0‘)
{
if (s[i] ==
‘,‘)
{
k++
;
t=
0;
i++
;
}
row[index].col[k][t++] =
s[i];
i++
;
}
}
bool cmp(Row a,Row b)
{
if(strcmp(a.col[now_c],b.col[now_c])<
0)
return true;
return false;
}
int main()
{
// freopen("in.txt","r",stdin);
freopen(
"database.in",
"r",stdin);
freopen("database.out",
"w",stdout);
scanf("%d%d",&n,&
m);
getchar();
for(
int i=
0; i<n; i++
)
{
gets(s);
shit(i);
}
for(
int i=
0; i<m; i++)
//枚举要排序的列
{
now_c=
i;
sort(row,row+
n,cmp);
for(
int j=
0; j<n; j++)
//枚举行
{
for(
int k=j+
1; k<n && strcmp(row[k].col[i],row[j].col[i])==
0; k++)
//判断相邻两行,第i列是否相等
{
for(
int p=i+
1; p<m; p++)
//枚举要判断的列
{
if(strcmp(row[k].col[p],row[j].col[p])==
0)
{
puts("NO");
printf("%d %d\n",row[j].id+
1,row[k].id+
1);
printf("%d %d\n",i+
1,p+
1);
return 0;
}
}
}
}
}
puts("YES");
return 0;
}
Gym 101308D Database 枚举
标签:ios bool open gets turn algorithm stdin span cst