/* FILE: trampolin.cpp last change: 2-Jul-2013 * a solver for problem trampolin */ #include #include using namespace std; inline int max( int x, int y ) { return x>y?x:y; } const int NN = 1000005; int h[NN], lijevo[NN], desno[NN]; char t[NN]; int main() { int n, k; ifstream fin("input.txt"); assert( fin ); fin >> n >> k; k--; for(int i=0; i> h[i]; fin >> t; fin.close(); // svima izracunaj koliko maksimalno mogu lijevo. // sve koji lijevo mogu do trampolina, pretvori u trampoline. for(int i=1; i=0; --i) { if( h[i] < h[i+1] ) continue; if( t[i+1] == 'T' ) t[i] = 'T'; desno[i] = 1 + desno[i+1]; } // izbroji trampoline i nadji najbolji ne-trampolin int T = 0, best = 0; for(int i=0; i 0 && h[l-1] == h[k] ) l--; while( d < n-1 && h[d+1] == h[k] ) d++; fout << d - l + 1 + max( lijevo[l], desno[d] ); } fout.close(); return 0; }