Cod sursa(job #2380958)

Utilizator Andrei-27Arhire Andrei Andrei-27 Data 15 martie 2019 18:26:18
Problema Secventa Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.16 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 ;
char s [ 500005 ] ;
bool capat ( int i , int j )
{
    return s [ i ] == s [ j ] && s [ i ] == NULL ;
}
int main () {

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

            if ( s [ i ] == '-' )
             {
                nr = - ( s [ i + 1 ] - '0' ) ;
                i +=2 ;
             }
             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 ;
}