摘要

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

著作权声明[编辑]

关于[编辑]