Cod sursa(job #2380965)

Utilizator Andrei-27Arhire Andrei Andrei-27 Data 15 martie 2019 18:44:37
Problema Secventa Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.35 kb
#include <bits/stdc++.h>
using namespace std ;
ifstream in ("secventa.in") ;
ofstream out ("secventa.out") ;
deque < int > q ;
int v [ 500005 ] ,n , k , i , best = - ( 1 << 30 ) , X , Y , nr , cnt , str ;
char s [ 50000005 ] ;
bool capat ( int i , int j )
{
    return s [ i ] == s [ j ] && s [ i ] == NULL ;
}
int main () {

    in >> n >> k ;
    in.get() ;
    in.getline( s  , 50000005 ) ;
    str = strlen( s ) ;
    for ( i = 0 ; i < str ; ++ i ) {
    cnt ++ ;
        nr = 0 ;
        while ( s [ i ] != ' ' && i < str )   {

            if ( s [ i ] == '-' )
             {
                nr = - ( s [ i + 1 ] - '0' ) ;
                i +=2 ;
             }
             else
               {
                   if ( nr >= 0 )
                    nr = nr * 10 + ( s [ i ] - '0' ) , i ++ ;
                    else
                    nr = nr * 10 - ( s [ i ] - '0' ) , i ++ ;
               }
        }
        v [ cnt ] = nr ;
        while ( !q.empty() && v [ q.back() ] >= v [ cnt ] )   q.pop_back() ;
        q.push_back( cnt ) ;
        if ( cnt - q.front() + 1 > k )    q.pop_front() ;
        if ( !q.empty() && v[ q.front() ] > best && q.back() >= k  )   {

            best = v [ q.front() ] ;
            X = q.back() - k + 1 ;
            Y = q.back() ;
        }
    }
     out << X << ' ' << Y << ' ' << best ;
}