2011-05-14 10:44:43 #include<stdio.h> #include<iostream> #include<algorithm> #define N 100010 using namespace std; struct Person { int id, rp; }pe[N]; int n,c[N],pa[N],pb[N]; int cmp(Person a,Person b) { return a.rp>b.rp||(a.rp==b.rp&&a.id>b.id); } void update(int d) { while (d<=n) { c[d]++; d+=d&(-d); } } int Sum(int d) { int temp=0; while (d>0) { temp+=c[d]; d-=d&(-d); } return temp; } int main() { int i,j,m; scanf("%d",&n); for(i=1;i<=n;i++) { scanf("%d",&(pe[i].rp)); pe[i].id=i; } sort(pe+1,pe+n+1,cmp); pb[pe[1].id]=0; for(i=2;i<=n;i++) { if(pe[i].rp==pe[i-1].rp) pb[pe[i].id]=pb[pe[i-1].id]; else pb[pe[i].id]=i-1; } pa[pe[0].id]=0; for(i=2;i<=n;i++) { update(pe[i-1].id); pa[pe[i].id]=Sum(pe[i].id-1); } scanf("%d",&m); while (m--) { scanf("%d",&j); printf("%d %d/n",pa[j],pb[j]); } return 0; }