Cod sursa(job #1038277)

Utilizator dan.ghitaDan Ghita dan.ghita Data 21 noiembrie 2013 11:36:45
Problema Range minimum query Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include<iostream>
#include<fstream>
#include<unordered_map>
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
int n, m, v[100001];
class pairHash{
public:
    long operator()(const pair<int, int> &k) const{
        return k.first * 100 + k.second;
    }
};

unordered_map<pair<int,int> , int, pairHash> a;
int main()
{
    f>>n>>m;
    for(int i=1; i<=n; ++i)
        f>>v[i], a[make_pair(i,i)]=v[i];
    for(int i=1; i<=n; ++i)
    for(int j=i+1; j<=n; ++j){
        a[make_pair(i,j)]=min(v[j], a[make_pair(i, j-1)]); //cout<<a[make_pair(i,j)];
    }
//
//for(int i=1; i<=n; ++i){
//    for(int j=i+1; j<=n; ++j)
//        cout<<a[make_pair(i,j)]<<' ';
//        cout<<'\n';
//
//    }
//    cout<<a[2][5];
    while(m--){
    int i,j;
    f>>i>>j;
    g<<a[make_pair(i,j)]<<'\n';


    }
    return 0;
}