在洛谷上面一看是绿题,以为不会有这样的思路,结果在洛谷题解上发现了和我思路类似的。
边读入边输出,每次用upper_bound()存入,保持序列的有序。
用vector,支持随机访问,下标为(i-1)/2,就是当前奇数的答案,原因是vector从0开始存。
代码如下。
#include<bits/stdc++.h> using namespace std; int n; vector<int> a; int main() { scanf("%d",&n); for(int i=1;i<=n;i++){ int x; scanf("%d",&x); a.insert(upper_bound(a.begin(),a.end(),x),x); if(i%2==1){ printf("%d\n",a[(i-1)/2]); } } return 0; }