| 题目链接 | 难度等级 | 完成状态 | 完成分数 | 最后编辑时间 | 失误原因(初次提交分数) |
|---|---|---|---|---|---|
| Jeopardy! | ★☆☆☆☆ | 答案正确 | 100 | 2015-02-24 14:18:18 | 字母打反(5) |
知识竞赛每题有一个得分,其中分为特别题和普通题,特别题可以将得分改为小等于自己当前分数的任何数。问应当如何安排答题顺序。
普通题先答,得分大的先答,贪心排序即可。
| 413C.cpp代码已折叠
展开折叠内容
|
|---|
#include<cstdio>
#include<iostream>
#include<string>
#include<algorithm>
#include<cstring>
using namespace std;
#define lld unsigned long long int
#define dsi(n) int n;scanf("%d",&n)
#define si(n) scanf("%d",&n)
#define f(i,n) for(int i=1;i<=n;++i)
#define fi(n) f(i,n)
#define f0(i,n) for(int i=0;i!=n;++i)
#define fd(i,n) for(int i=n;i>=1;--i)
#define ci const int&
#define foreach(i,s) for(typeof(s.begin()) i=s.begin();i!=s.end();++i)
#define c(x) const x&
lld a[1000]={},s[1000]={},ans=0;
int main()
{
dsi(n);dsi(k);
fi(n)
{
cin>>a[i];
}
fi(k)
{
dsi(t);
s[i]=a[t];
a[t]=0;
}
sort(s+1,s+k/*fixed:不是n*/+1);
fi(n)
ans+=a[i];
fd(i,k)
ans+=max(ans,s[i]);
cout<<ans;
return 0;
}
|