Cod sursa(job #2323123)

Utilizator Andrei-27Arhire Andrei Andrei-27 Data 18 ianuarie 2019 20:54:16
Problema Range minimum query Scor 20
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.08 kb
#include <bits/stdc++.h>
#define pb push_back
#define sz size()
using namespace std ;
const int NR = 100001 ;
ifstream f ("rmq.in") ;
ofstream g ("rmq.out") ;
vector < int > v [ NR ] ;
int level [ NR ] , last ;
const int NMAX = 1000 ;
const int LOGNMAX  = 11;


    void rmq_sol1 ( int rmq [ NMAX ][ NMAX ] , int v [ NMAX ] , int n )
    {
    int i , j ;
    for ( i = 1 ; i <= n ; ++ i )
    rmq [ i ][ i ] = v  [ i ] ;
    for (  i = 1 ; i < n ; ++ i )
    for ( j = i + 1; j <= n ; ++ j )
    rmq [ i ][ j ] = min ( rmq [ i ][ j - 1 ] , v [ j ] ) ;
    }
   int query_sol1 ( int rmq [ NMAX ][ NMAX ] , int v [ NMAX ] , int n , int a , int b  )
    {
        if ( a > b )    swap ( a , b ) ;
        return rmq [ a ][ b ] ;
    }
int main ()
{
    int n , q ; f >> n >> q ;
    int v[ NMAX ] = { 0} ;
    int rmq1 [ NMAX ][ NMAX ] = {0} ;
    for ( int i = 1 ; i <=  n ; ++ i )   f >> v[ i ];
    rmq_sol1 ( rmq1 , v , n  ) ;
    while ( q -- )
    {
        int a , b ; f >> a >> b ;
        g << query_sol1 ( rmq1 , v , n  , a   , b  ) << "\n" ;

    }
}