小 A 有 n 张卡牌,这 n 张卡牌初始时都放在桌子上,第 i 张上写有一个非负整数 ai。
接下来小 A 会选出一些卡牌,第一轮他会从桌子上选出一张上面写有奇数的卡牌拿到手上,第二轮他会选出一张上面写有偶数的卡牌拿到手上,以此类推,轮数为奇数时他需要选一张上面写有奇数的卡牌,轮数为偶数时他需要选一张写有偶数的卡牌。
小 A 可以一直进行选牌操作,直到他一共选出了 k 张牌拿在手上,或者某一轮的时候他没有对应奇偶性的牌可拿了。小 A 想要知道他选出的牌上的数字和最大是多少?
第一行两个整数 n,k,表示卡牌数量和小 A 最多选几张牌。
第二行 n 个以空格分隔的非负整数 a1,a2,…,an。
一行一个整数答案。
【数据范围】
对于 40% 的数据,n≤1000。
对于另外 20% 的数据,保证 n 为偶数且 a1,a2,…,an 中偶数和奇数都各有 2n 个。
对于 100% 的数据,1≤n≤105,1≤k≤n,0≤ai≤1000。
这名菜爆了的蒟蒻の代码
#include<bits/stdc++.h>
using namespace std;
int n,k;
int a[1000010];
int zuidazhihe=0;
int big=-1;
int main()
{
cin>>n>>k;
for(int i=1;i<=n;i++)
cin>>a[i];
int num=0;
for(int i=1;i<=k;i++)
{
num++;
if(num%2==0)//偶数
{
for(int i=2;i<=n;i++)
{
big=-1;
if(i%2==0)
{
if(a[i]>big)
{
big=a[i];
}
}
}
zuidazhihe+=big;
}
else
{
for(int i=1;i<=n;i++)
{
big=-1;
if(i%2!=0)
{
if(a[i]>big)
{
big=a[i];
}
}
}
zuidazhihe+=big;
}
if(num==n)
{
break;//是没有了
}
}
cout<<zuidazhihe;
return 0;
}