hdu5273dp

来源:互联网 发布:独创科技网络 编辑:程序博客网 时间:2024/06/05 03:54
import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.io.PrintWriter;import java.io.StreamTokenizer;import java.math.BigInteger;import java.util.ArrayList;import java.util.Arrays;import java.util.Comparator;import java.util.HashMap;import java.util.LinkedList;import java.util.PriorityQueue;import java.util.Queue;import java.util.Scanner;import java.util.Stack;import java.util.StringTokenizer;public class Main {        public static void main(String[] args) throws IOException{                StreamTokenizer cin = new StreamTokenizer(new BufferedInputStream(System.in));                 InputReader in = new InputReader(System.in)  ;                PrintWriter out = new PrintWriter(System.out) ;                while(cin.nextToken() != cin.TT_EOF){                           new Task().solve(cin, out) ;                }                out.flush() ;         }}class Task{     int[]  a ;     int[][] dp ;      public void solve(StreamTokenizer cin , PrintWriter out) throws IOException{                   int n  = (int)cin.nval  ;                   cin.nextToken() ;  int q  = (int)cin.nval  ;                   a = new int[n+1] ;                   dp = new int[n+1][n+1]  ;                   for(int i = 1 ; i <= n ; i++){                          cin.nextToken() ;  a[i]  = (int)cin.nval  ;                   }                   for(int i = 0 ; i <= n ; i++) Arrays.fill(dp[i] , 0) ;                   for(int i = 1 ; i <= n ; i++){                        dp[1][i] = dp[1][i-1] ;                        for(int j = 1 ; j  <  i ; j++){                             if(a[j] > a[i])  dp[1][i]++ ;                        }                   }                   for(int i = 2 ; i <= n ; i++){                         int k = 0 ;                           for(int j = i ; j <= n ; j++){                                if(a[i-1] > a[j]) k++ ;                                dp[i][j] = dp[i-1][j] - k ;                          }                   }                   while(q-- > 0){                         cin.nextToken() ; int l = (int) cin.nval ;                         cin.nextToken() ; int r = (int) cin.nval ;                         out.println(dp[l][r])  ;                   }                //    out.flush();       }}class InputReader{    public BufferedReader reader;    public StringTokenizer tokenizer;    public InputReader(InputStream stream){           reader = new BufferedReader(new InputStreamReader(stream), 32768);           tokenizer = null;    }    public String next(){        while(tokenizer == null || !tokenizer.hasMoreTokens()){            try{                tokenizer = new StringTokenizer(reader.readLine());            }catch (IOException e) {                throw new RuntimeException(e);            }        }        return tokenizer.nextToken();    }    public int nextInt() {        return Integer.parseInt(next());    }    public long nextLong() {        return Long.parseLong(next());    }}
0 0
原创粉丝点击