http://codeforces.com/contest/382
A . Ksenia and Pan Scales
题意 : 每个大写字母都占相同的重量,第一个字符串指的是天平两边现在有的砝码分布,而第二个字符串是想让你把第二个字符串全部的砝码放到第一个字符串上,看“|”两边的字母是不是一样多。
思路 :算是一个简单小模拟吗?
#include <iostream> #include <stdio.h> #include <string.h> #include <stdlib.h> #include <algorithm> using namespace std ; int main() { char str[110] ; char str1[110] ; while(scanf("%s",str)!=EOF) { scanf("%s",str1) ; int len = strlen(str) ; int len1 = 0 ; int len2 = 0,len3 = strlen(str1) ; for(int i = 0 ; i < len ; i++) { if(str[i] != '|') len1++ ; else break ; } len2 = len-len1-1 ; int maxx = max(len1,len2) ; int minn = min(len1,len2) ; if(maxx - minn > len3) { printf("Impossible\n") ; continue ; } else { int x = len3-(maxx-minn) ; if(x%2 == 1) printf("Impossible\n") ; else { if(len1 > len2) { for(int i = 0 ; i < len1 ; i++) printf("%c",str[i]) ; for(int i = 0 ; i < x/2 ; i++) printf("%c",str1[i]) ; printf("|") ; for(int i = len1+1 ; i < len ; i++) printf("%c",str[i]) ; for(int i = x/2 ; i < len3 ; i++) printf("%c",str1[i]) ; printf("\n") ; } else { for(int i = 0 ; i < len1 ; i++) printf("%c",str[i]) ; for(int i = 0 ; i < x/2 +maxx-minn; i++) printf("%c",str1[i]) ; printf("|") ; for(int i = len1+1 ; i < len ; i++) printf("%c",str[i]) ; for(int i = x/2 +maxx-minn ; i < len3 ; i++) printf("%c",str1[i]) ; printf("\n") ; } } } } return 0 ; }