C. Sagheer and Nubian Market
来源:互联网 发布:有装新风后悔的吗 知乎 编辑:程序博客网 时间:2024/05/24 06:56
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?
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.
On a single line, print two integers k, T — the maximum number of souvenirs Sagheer can buy and the minimum total cost to buy these k souvenirs.
3 112 3 5
2 11
4 1001 2 5 6
4 54
1 77
0 0
注意要用long long
#include <cstdio>#include <queue>#include <iostream>#include <string>#include <cstring>#include <cmath>#include <algorithm>using namespace std;const int MAXN = 1e5+7;int n,m;long long num[MAXN];long long check(long long mid){ priority_queue<long long,vector<long long>,greater<long long> >q; for(int i = 1 ; i <= n ; ++i) { q.push(num[i] + i*mid); } long long sum = 0; for(int i = 1 ; i <= mid ; ++i) { sum += q.top(); q.pop(); } return sum;}int main(){ scanf("%d%d",&n,&m); for(int i = 1 ; i <= n ; ++i)scanf("%I64d",&num[i]); long long low = 0,high = n,mid,ans; while(low <= high) { mid = (low + high)>>1; if(check(mid) <= m) { ans = mid; low = mid + 1; } else high = mid - 1; } printf("%I64d %I64d\n",ans,check(ans)); return 0;}
- C. Sagheer and Nubian Market
- Sagheer and Nubian Market
- Sagheer and Nubian Market
- Sagheer and Nubian Market
- Codeforces 812C-Sagheer and Nubian Market
- Codeforces 812 C Sagheer and Nubian Market
- Codeforces 812C Sagheer and Nubian Market
- codeforces 812C Sagheer and Nubian Market
- Codeforces812C Sagheer and Nubian Market
- Codeforces 812C Sagheer and Nubian Market[二分]
- Codeforces 812C Sagheer and Nubian Market【二分】水题
- codeforces 812 C. Sagheer and Nubian Market(二分答案)
- Codeforces Round #417 (Div. 2) C. Sagheer and Nubian Market
- Codeforces Round #417 (Div. 2) C. Sagheer and Nubian Market
- 【Codeforces 812 C. Sagheer and Nubian Market】+ 二分
- CF# 812 C. Sagheer and Nubian Market(二分)
- codeforces 812C Sagheer and Nubian Market (二分)
- Sagheer and Nubian Market(二分)
- 在已安装win10环境中利用EasyBCD引导安装Ubuntu16.04
- 深度学习在graph上的应用
- solr简介和使用
- 数据库创建表的时候,column为关键字的错误
- 【计算机视觉】 相机姿态估计之标记检测-检测ArUco板2
- C. Sagheer and Nubian Market
- volley网络编程
- win10里java环境的几个变量
- linux磁盘管理
- iOS Runtime msg_send报错 too many argument to function call
- 回调函数c++实现
- [P1091]合唱队形
- USACO-Section1.5 Number Triangles【动态规划】
- gulp安装: