hdu 5443 The Water Proble(長春ネットワーク試合——暴力)

2745 ワード

テーマリンク:http://acm.hdu.edu.cn/showproblem.php?pid=5443
The Water Problem
Time Limit:1500/1000 MS(Java/Others)    Memory Limit:131313137172/1313137172 K(Java/Others)
Total Submission(s):1084    Acceepted Submission(s):863
Problem Description
In Land waterless、water is a very limited resource.People always fight for the bigust source of water.Gven a sequence of water sources with 
a 1,a 2,a 3,…,an representing the size of the water source.Given a set of queries each containing 
2 integers 
l and 
r,please find out the biggaest water source between 
al and 
ar.
 
Input
First you are given n n integer 
T(T≦10) indicating the number of test cases.For each test case,there is a number 
n(0≦n≦1000) n a line representing the number of water sources. 
n integers follow,respively 
a 1,a 2,a 3,…,an,and each integer is in 
{1、…、106}.On the nextライン、there is a number 
q(0≦q≦1000) representing the number of queries.After that,there will be 
q LINE with two integers 
l and 
r(1≦l≦r≦n) indicating the range of which you shound find out the biggest water source.
 
Output
For each query,output an integer representing the size of the biggest water source.
 
Sample Input

   
   
   
   
3 1 100 1 1 1 5 1 2 3 4 5 5 1 2 1 3 2 4 3 4 3 5 3 1 999999 1 4 1 1 1 2 2 3 3 3
 
Sample Output

   
   
   
   
100 2 3 4 4 5 1 999999 999999 1
 
ソurce
2015 ACM/ICPC Asia Regional Changchun Online
 
Recommund
hujie   |   We have carefully selected several simiar probles for you:   5664  5663  5662  5661  5660 
 
nつの池の水量を与え、区間内の最大の水量を探し出す。
区間の一番の値を求めて、普通は線分樹の方法を採用していますが、この問題のデータ量は大きくなくて、暴力は全部過ぎました。
詳細はコードを参照してください
#include <iostream>
#include <cstdio>

using namespace std;

int main()
{
    int t;
    int a[1010],l,r;
    scanf("%d",&t);
    while (t--)
    {
        int n;
        scanf("%d",&n);
        for (int i=1; i<=n; i++)
        {
            scanf("%d",&a[i]);
        }
        int q;
        scanf("%d",&q);
        while (q--)
        {
            int Max=0;
            scanf("%d%d",&l,&r);
            for (int i=l; i<=r; i++)
            {
                if (a[i]>Max)
                    Max=a[i];
            }
            cout<<Max<<endl;
        }
    }
    return 0;
}