题目链接 | 难度等级 | 完成状态 | 完成分数 | 最后编辑时间 | 失误原因(初次提交分数) |
---|---|---|---|---|---|
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; } |