2014年1月17日 星期五

[POI] 20th stage I - pD Taxis


#include<stdio.h>
#include<algorithm>
using namespace std;
long long int n,m,k,s[500005]={0};
int cmp(long long int a,long long int b){
    return a>b;
}
int main(){
    long long int i,ans=0,flag=0,st=0;
    scanf("%lld%lld%lld",&n,&m,&k);
    for(i=0;i<k;i++)
        scanf("%lld",&s[i]);
    sort(s,s+k,cmp);
    for(i=0;i<k;i++){
        if(flag==0 && s[i+1]+m<n){
            flag=1;
            if(s[i]<n-m) break;
            n=m-(s[i]-(n-m))/2;

        }
        else{
            st+=s[i]-(m-st);
            if(s[i]<m-st) break;
        }
        if(st>=n){
            ans=i+1;
            break;
        }
    }
    printf("%lld\n",ans);

}

沒有留言:

張貼留言