优先队列或者sort一遍都能解决
第一次AC:
//
// main.cpp
// A1125
//
// Created by Jacky Roth on 2019/2/17.
// Copyright © 2019 Jacky Roth. All rights reserved.
//
#include <iostream>
#include <stdio.h>
#include <math.h>
#include <algorithm>
#include <string.h>
#include <string>
#include <vector>
using namespace std;
vector<int>num;
int main(int argc, const char * argv[]) {
int n,data;
scanf("%d",&n);
for (int i=0; i<n; i++) {
scanf("%d",&data);
num.push_back(data);
}
sort(num.begin(), num.end());
int res=0;
res=(num[0]+num[1])/2;
for (int i=2; i<num.size(); i++) {
res=(res+num[i])/2;
}
printf("%d\n",res);
return 0;
}
第二次AC:
//
// main.cpp
// test6
//
// Created by Jacky Roth on 2019/2/28.
// Copyright © 2019 Jacky Roth. All rights reserved.
//
#include <iostream>
#include <stdio.h>
#include <math.h>
#include <string.h>
#include <vector>
#include <queue>
#include <algorithm>
#include <unordered_map>
using namespace std;
int main(int argc, const char * argv[]) {
int N,data;
double a,b;
scanf("%d",&N);
priority_queue<int,vector<int> ,greater<>>q;
for (int i=0; i<N; i++) {
scanf("%d",&data);
q.push(data);
}
while (q.size()>1) {
a=q.top();
q.pop();
b=q.top();
q.pop();
q.push((a+b)/2);
}
printf("%d\n",q.top());
return 0;
}