TYVJ 1038 忠诚 by C++
用了老办法,没啥新意,只是自己写了个sort
1: #include<iostream>
2: #include<string.h>
3: using namespace std;
4: int m,n;
5: const int maxn=100001;
6: int a[maxn],pos[maxn];
7:
8: void sort(int l,int r)
9: {
10: int i=l,j=r,mid=a[(l+r)/2];
11: while (i<=j){
12: while (a[i]<mid) i++;
13: while (a[j]>mid) j--;
14: if (i<=j){
15: int tmp;
16: tmp=a[i];a[i]=a[j];a[j]=tmp;
17: tmp=pos[i];pos[i++]=pos[j];pos[j--]=tmp;
18: }
19: }
20: if (i<r) sort(i,r);
21: if (l<j) sort(l,j);
22: }
23:
24: int main()
25: {
26: cin >> m >> n;
27: for (int i=0;i<m;i++){
28: cin >> a[i];
29: pos[i]=i+1;
30: }
31: sort(0,m-1);
32: int s,t;
33: for (int i=0;i<n;i++){
34: cin >> s >> t;
35: for (int j=0;j<m;j++) if (pos[j]>=s && pos[j]<=t){
36: cout << a[j] << ' ';
37: break;
38: }
39: }
40: cout << endl;
41: return 0;
42: }