View Code of Problem 134

#include <stdio.h>
#include <stdlib.h>

struct num{
	int data;
	int pos;
};

struct num arr[100005];

int comp(const void *a, const void *b){
	return (*(struct num *)a).data > (*(struct num *)b).data ? 1 : -1; 
}

int main(){
	int n,q,l,r;
	//输入:1个整数n,n个整数,1<=n<=100000 
	while(scanf("%d", &n)!=EOF){
		for(int i=0; i<n; i++){
			scanf("%d", &arr[i].data);
			arr[i].pos = i+1;
		}
		//处理1:对数组快排 
		qsort(arr, n, sizeof(arr[0]), comp);
		//输入:1个整数q,q对整数,1<=q<=100000
		scanf("%d", &q);
		while(q--){
			scanf("%d %d", &l, &r);
			for(int i=0; i<n; i++){
				if(l<=arr[i].pos && arr[i].pos<=r){
					printf("%d\n", arr[i].data);
					break;
				}
			}
		}
		//处理2:遍历数组,输出第一个满足条件的数值 
		//输出:q个整数 
	}
	
	
}

Double click to view unformatted code.


Back to problem 134