SRM457 Div1 Easy(250) TheTriangleBothDivs
時計の表示を全て生成して、timeとの整合性を調べ、最小の時刻を返す。
#include <string> #include <stdio.h> using namespace std; class TheTriangleBothDivs { bool check( string t1, string t2 ); public: string fix( string time ); }; string TheTriangleBothDivs::fix( string time ) { string ans = "23:59"; for ( int h=0; h<24; h++ ) for ( int m=0; m<60; m++ ) for ( int o=-9; o<=+9; o++ ) { char disp[16]; sprintf( disp, "%02d:%02d GMT%+2d", h, m, o ); char gmt[16]; sprintf( gmt, "%02d:%02d", (h-o+24)%24, m ); if ( gmt < ans && check( time, disp ) ) ans = gmt; } return ans; } bool TheTriangleBothDivs::check( string t1, string t2 ) { for ( int i=0; i<11; i++ ) if ( t1[i] != '?' && t1[i] != t2[i] ) return false; return true; }