【Codeforces 279C】Ladder
阿新 • • 發佈:2019-03-24
.so new t problems public pre ces lin pri i+1
【鏈接】 我是鏈接,點我呀:)
【題意】
題意
【題解】
設pre[i]表示i往前一直遞增能遞增多遠
設aft[i]表示i往後一直遞增能遞增多遠
如果aft[l]+pre[r]>=(r-l+1)那麽就ok否則no
【代碼】
import java.io.*; import java.util.*; public class Main { static InputReader in; static PrintWriter out; public static void main(String[] args) throws IOException{ //InputStream ins = new FileInputStream("E:\\rush.txt"); InputStream ins = System.in; in = new InputReader(ins); out = new PrintWriter(System.out); //code start from here new Task().solve(in, out); out.close(); } static int N = 50000; static class Task{ int n,m; public void solve(InputReader in,PrintWriter out) { n = in.nextInt();m = in.nextInt(); int a[] = new int[n+5]; int aft[] = new int[n+5],pre[] = new int[n+5]; for (int i = 1;i <= n;i++) a[i] = in.nextInt(); for (int i = n;i >= 1;i--) { if (i+1<=n && a[i]<=a[i+1]) aft[i] = aft[i+1]+1; else aft[i] = 1; } for (int i = 1;i <= n;i++) { if (i-1>=1 && a[i-1]>=a[i]) pre[i] = pre[i-1]+1; else pre[i] = 1; } for (int i = 1;i <= m;i++) { int x,y; x = in.nextInt();y = in.nextInt(); if (aft[x]+pre[y]>=(y-x+1)) { System.out.println("Yes"); }else { System.out.println("No"); } } } } static class InputReader{ public BufferedReader br; public StringTokenizer tokenizer; public InputReader(InputStream ins) { br = new BufferedReader(new InputStreamReader(ins)); tokenizer = null; } public String next(){ while (tokenizer==null || !tokenizer.hasMoreTokens()) { try { tokenizer = new StringTokenizer(br.readLine()); }catch(IOException e) { throw new RuntimeException(e); } } return tokenizer.nextToken(); } public int nextInt() { return Integer.parseInt(next()); } } }
【Codeforces 279C】Ladder