2009-01-14
SRM369 Div1 Easy: BeautifulString
Failed System Test...再投稿×2
- AAA..,BBB..を交互にはさんでいくが、A,Bの連続部分が何回ずつになるかが問題
- int a=min(countA,maxA*adiv), b=min(countB,maxB*bdiv); のところはlong longにしないとオーバーフロー
typedef long long ll; class BeautifulString { public: int maximumLength(int countA, int countB, int maxA, int maxB) { maxA = min(maxA,countA); maxB = min(maxB,countB); if(maxA==0) return maxB; if(maxB==0) return maxA; int adivmin=(countA+maxA-1)/maxA, bdivmin=(countB+maxB-1)/maxB, adivmax=countA, bdivmax=countB; if(adivmin<bdivmin){ // adivmin >= bdivmin swap(countA,countB); swap(maxA,maxB); swap(adivmin,bdivmin); swap(adivmax,bdivmax); } int adiv=adivmin,bdiv=min(adivmin,bdivmax); if(adiv-bdiv>1) adiv=bdiv+1; int a=min((ll)countA,(ll)maxA*adiv), b=min((ll)countB,(ll)maxB*bdiv); return a+b; } };