
解题思路

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAX_N 100005
#define MAX_M 1001
#define INF 0x3f3f3f3f
int a[MAX_M][5];
char s[MAX_N][10];
int main(){
int n,m;
scanf("%d %d",&n,&m);
for(int i=1;i<=n;i++){
scanf("%s",s[i]);
}
for(int i=1;i<=m;i++){
for(int j=0;j<5;j++){
a[i][j]=-1;
}
}
int min_len=INF;
int L=0,R=0;
for(int r=1;r<=n;r++){
char* str=s[r];
int j=str[0]-'A';
int i=atoi(&str[1]);
a[i][j]=r;
int flag=1;
int min_pos=INF;
for(int k=0;k<5;k++){
if(a[i][k]==-1){
flag=0;
break;
}
if(a[i][k]<min_pos){
min_pos=a[i][k];
}
}
if(flag){
int len=r-min_pos+1;
if(len<min_len||(len==min_len&&min_pos<L)){
min_len=len;
L=min_pos;
R=r;
}
}
}
printf("%d %d\n",L,R);
return 0;
}