扔下代码就逃~
第一题:
#include <bits/stdc++.h>
using namespace std;
const int maxn = 2e5+7;
int a[maxn];
int main()
{
priority_queue<int> qmax;
priority_queue<int,vector<int>,greater<int> > qmin;
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
int r = 1;
int q;
for(int i=1;i<=m;i++)
{
cin>>q;
for(int j=r;j<=q;j++)
{
qmax.push(a[j]);
if(qmax.size()==i)
{
qmin.push(qmax.top());
qmax.pop();
}
}
r = q+1;
cout<<qmin.top()<<endl;
qmax.push(qmin.top());
qmin.pop();
}
return 0;
}
第二题:
#include <bits/stdc++.h>
using namespace std;
typedef pair<int,int> P;
const int maxn = 1e5+7;
int a[maxn],b[maxn];
int nxt[maxn];
int main()
{
int n;
cin>>n;
priority_queue<pair<int,int>,vector<pair<int,int> >,greater<pair<int,int> > > q;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
for(int i=1;i<=n;i++)
{
cin>>b[i];
nxt[i] = 1;
q.push(P(a[1]+b[i],i));
}
int p = 0;
for(int i=0;i<n;i++)
{
cout<<q.top().first<<" ";
p = q.top().second;
q.pop();
q.push(P(a[++nxt[p]]+b[p],p));
}
return 0;
}
第三题:
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<ll,ll> P;
const int maxn = 1e5+7;
int a[maxn],b[maxn],c[maxn],x[maxn];
ll f(int i)
{
return a[i]*x[i]*x[i]+b[i]*x[i]+c[i];
}
int main()
{
int n,m;
cin>>n>>m;
priority_queue<P,vector<P>,greater<P> > q;
for(int i=1;i<=n;i++)
{
cin>>a[i]>>b[i]>>c[i];
x[i] = 1;
q.push(P(f(i),i));
}
int tmp = 0;
for(int i=0;i<m;i++)
{
cout<<q.top().first<<" ";
tmp = q.top().second;
q.pop();
x[tmp]++;
q.push(P(f(tmp),tmp));
}
return 0;
}