文章
27
粉丝
86
获赞
10
访问
29.5k
C++
题目可能没有描述清楚
你有一个序列a1,a2,...,an,然后给你一些区间[l,r]。对于每一个区间,你需要找到下式的最小值,对于所有可能的x,∑i=l...r |x-ai|
#include <iostream>
#include <vector>
#include <math.h>
#include <algorithm>
using namespace std;
int main(){
int N;
cin >> N;
vector<int> a;
int ai;
for(int i = 0; i < N; i++){
cin >> ai;
a.push_back(ai);
}
sort(a.begin(), a.end());
int Q;
cin >> Q;
int l, r, midIndex;
double mean;
for(int i = 0; i < Q; i++){
cin >> l >> r;
l -= 1;
r -= 1;
if((r - l) % 2 == 0){
midIndex = (r + l) / 2;
}
else{
for(int i = 0; i < a.size(); i++){
mean += a[i];
}
mean /= a.size();
// cout << mean << endl;
if(fabs(mean - a[(r + l) / 2]) > fabs(mean - a[(r + l) / 2 + 1])){
...
登录后发布评论
暂无评论,来抢沙发