Little_Brown_Rabbit @ 2024-10-04 15:55:54
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
long long a[n];
for(int i=0;i<n;i++) cin>>a[i];
for(int i=0;i<n;i+=2)
{
int b[i+1];
for(int l=0;l<=i;l++)
{
b[l]=a[l];
}
sort(b,b+i+1);
cout<<b[i/2]<<endl;
}
}
40分。后几点tle,求优化
by ph22geyi @ 2024-10-04 15:56:56
有没有题目?
(虽然我也很菜QAQ)
by ph22geyi @ 2024-10-04 15:57:38
@ph22geyi 等下我傻了,题目在旁边
by Little_Brown_Rabbit @ 2024-10-04 15:58:20
@ph22geyi p1168线段树
by ycyxh1 @ 2024-10-04 15:58:38
@xly_123 你的代码复杂度以及算法都不对,直接看tj吧
by ph22geyi @ 2024-10-04 16:00:24
@xly_123 能不能在输入的时候建一个数组储存和?
int a[100];
int s[100] = {0};
for(int i = 0;i < n; i++){
cin >> a[i];
s[i] = a[i]+s[i-1];
}
by ph22geyi @ 2024-10-04 16:01:02
@ph22geyi 或者是一边输入一边输出答案...(弱)
by Chang__An__Li @ 2024-10-04 16:20:20
建两个数组,一个存大的数,一个存小的数。
遍历数组。
每遍历到一个数,将其与大数数组的第一个数进行比较,大了往大数组里放,小了往小数组里放。保持大小两数组大小相差小于等于1。答案就等于大数组的第一个数。
这样就可以用O(n)的复杂度解决。