Educational Codeforces Round 27 B
题意:相当于给你6个数,问改变几次,可以使得前三个数字和==后三个数字和
思路:排序后,看是前面最小的数字可以加的多,还是后面那么最大的数字减的多
1 #include<bits/stdc++.h> 2 using namespace std; 3 4 char s[10]; 5 int a[5],b[5]; 6 int x1,x2,x3; 7 8 int main(){ 9 scanf("%s",s+1); 10 int s1=0,s2=0; 11 for(int i=1;i<=3;i++) { 12 a[i]=s[i]-'0'; 13 s1+=a[i]; 14 } 15 for(int i=4;i<=6;i++){ 16 b[i-3]=s[i]-'0'; 17 s2+=b[i-3]; 18 } 19 if(s1==s2) { 20 printf("0\n");return 0; 21 } 22 if(s1>s2) { 23 for(int i=1;i<=3;i++) swap(a[i],b[i]); 24 } 25 sort(a+1,a+4); 26 sort(b+1,b+4); 27 int l=1,r=3; 28 int x=0; 29 if(s1>s2) swap(s1,s2); 30 while(s1<s2&&l<=3&&r>=1){ 31 x++; 32 int xx=9-a[l]; 33 int yy=b[r]; 34 if(xx>yy) {s1+=xx;l++;} 35 else {s2-=yy;r--;} 36 37 } 38 cout<<x<<endl; 39 }