求中位數,允許的解有幾個以及數組中存在幾個解 代碼:
#include<cstdio> #include<iostream> #include<algorithm> #include<cstring> #include<string> using namespace std; const int maxn = 1000005; int a[maxn]; int main() { int n; while(cin>>n) { int i; for(i=0; i<n; i++) { scanf("%d", &a[i]); } int sum=0, count=0, mmin,mmax; sort(a, a+n); if(n%2) { sum = 1; mmin=mmax=a[n/2]; }else{ sum=a[n/2]-a[n/2-1]+1; mmin=a[n/2-1],mmax=a[n/2]; } for(int i=0; i<n; i++) { if(a[i]>=mmin && a[i]<=mmax) count++; if(a[i]>mmax) break; } printf("%d %d %d\n", mmin, count, sum); } return 0; }