Codeforces 761C Dasha and Password

原题传送

#include 
int min(int a, int b) {
	return a < b ? a : b;
}
int minn(int a, int b, int c, int d, int e, int f) {
	return min(min(min(a, b), min(c, d)), min(e, f));
}
int main() {
	char c[55][55];
	int a[55][3];
	int m, n, mid;
	scanf("%d%d", &n, &m);
	for(int i = 0; i < n; i++)
		scanf("%s", c[i]);
	for(int i = 0; i < n; i++)
		a[i][0] = a[i][1] = a[i][2] = 30;
	for(int i = 0; i < n; i++)
		for(int j = 0; j < m; j++)
			if(a[i][2] > min(j, m - j) && (c[i][j] == '#' || c[i][j] == '*' || c[i][j] == '&'))
				a[i][2] = min(j, m - j);
			else if(a[i][0] > min(j, m - j) && c[i][j] >= '0' && c[i][j] <= '9')
				a[i][0] = min(j, m - j);
			else if(a[i][1] > min(j, m - j) && c[i][j] >= 'a' && c[i][j] <= 'z')
				a[i][1] = min(j, m - j);
	int step = 90;
	for(int i = 0; i < n - 2; i++) {
		for(int j = i + 1; j < n - 1; j++) {
			for(int k = j + 1; k < n; k++) {
				mid = minn(a[i][0] + a[j][1] + a[k][2], a[i][0] + a[j][2] + a[k][1], a[i][1] + a[j][0] + a[k][2], a[i][1] + a[j][2] + a[k][0], a[i][2] + a[j][1] + a[k][0], a[i][2] + a[j][0] + a[k][1]);
				if(mid < step)
					step = mid;
			}
		}
	}
	printf("%d\n", step);
	return 0;
}



你可能感兴趣的:(Codeforces)