zoukankan      html  css  js  c++  java
  • Round #417 C. Sagheer and Nubian Market(Div.2)

    On his trip to Luxor and Aswan, Sagheer went to a Nubian market to buy some souvenirs for his friends and relatives. The market has some strange rules. It contains n different items numbered from 1 to n. The i-th item has base cost ai Egyptian pounds. If Sagheer buys k items with indices x1, x2, ..., xk, then the cost of item xj is axj + xj·k for 1 ≤ j ≤ k. In other words, the cost of an item is equal to its base cost in addition to its index multiplied by the factor k.

    Sagheer wants to buy as many souvenirs as possible without paying more than S Egyptian pounds. Note that he cannot buy a souvenir more than once. If there are many ways to maximize the number of souvenirs, he will choose the way that will minimize the total cost. Can you help him with this task?

    Input

    The first line contains two integers n and S (1 ≤ n ≤ 105 and 1 ≤ S ≤ 109) — the number of souvenirs in the market and Sagheer's budget.

    The second line contains n space-separated integers a1, a2, ..., an (1 ≤ ai ≤ 105) — the base costs of the souvenirs.

    Output

    On a single line, print two integers kT — the maximum number of souvenirs Sagheer can buy and the minimum total cost to buy these k souvenirs.

    Examples
    input
    3 11
    2 3 5
    output
    2 11
    input
    4 100
    1 2 5 6
    output
    4 54
    input
    1 7
    7
    output
    0 0
    Note

    In the first example, he cannot take the three items because they will cost him [5, 9, 14] with total cost 28. If he decides to take only two items, then the costs will be [4, 7, 11]. So he can afford the first and second items.

    In the second example, he can buy all items as they will cost him [5, 10, 17, 22].

    In the third example, there is only one souvenir in the market which will cost him 8 pounds, so he cannot buy it.

     1 #include <stdio.h>
     2 #include <iostream>
     3 #include <algorithm>
     4 #define maxn 100010
     5 #define ll long long
     6 using namespace std;
     7 ll a[maxn];
     8 ll b[maxn];
     9 
    10 int main(){
    11     ll n,m;
    12     scanf("%I64d%I64d",&n,&m);
    13     for(int i=1;i<=n;i++)
    14         scanf("%I64d",&a[i]);
    15     ll l,mid,r;
    16     l=1;
    17     r=n;
    18     ll res=0,sum=0,ans;
    19     while(l<=r){
    20         mid=(l+r)>>1;
    21         for(int i=1;i<=n;i++)
    22             b[i]=a[i]+i*mid;
    23         sort(b+1,b+n+1);
    24         ans=0;
    25         for(int i=1;i<=mid;i++)
    26             ans+=b[i];
    27         if(ans<=m){
    28             l=mid+1;
    29             sum=ans;
    30             res=mid;
    31         }
    32         else r=mid-1;
    33     }
    34     printf("%I64d %I64d",res, sum);
    35     return 0;
    36 }
  • 相关阅读:
    启动redis时报错:FATAL CONFIG FILE ERROR :Bad directive or wrong number of arguments
    转载Redis的三个框架:Jedis,Redisson,Lettuce
    转载Dubbo详解(一):Dubbo介绍和SpringBoot整合Dubbo+ZooKeeper
    Redisson如何实现类似incr的自增操作
    转载解决 com.alibaba.fastjson.JSONException: autoType is not support.
    转载springboot+mybatis实现数据库的读写分离
    转载dubbo服务被重复调用三次的原因
    js中实现函数防抖跟函数节流
    网站项目后台的目录命名为admin后,网页莫名其妙的变样了
    createreactapp不支持less的解决方式
  • 原文地址:https://www.cnblogs.com/z-712/p/7307816.html
Copyright © 2011-2022 走看看