贪心 A - Sasha and His Trip

题目
Sasha is a very happy guy, that’s why he is always on the move. There are n cities in the country where Sasha lives. They are all located on one straight line, and for convenience, they are numbered from 1 to n in increasing order. The distance between any two adjacent cities is equal to 1 kilometer. Since all roads in the country are directed, it’s possible to reach the city y from the city x only if x<y.

Once Sasha decided to go on a trip around the country and to visit all n cities. He will move with the help of his car, Cheetah-2677. The tank capacity of this model is v liters, and it spends exactly 1 liter of fuel for 1 kilometer of the way. At the beginning of the journey, the tank is empty. Sasha is located in the city with the number 1 and wants to get to the city with the number n. There is a gas station in each city. In the i-th city, the price of 1 liter of fuel is i dollars. It is obvious that at any moment of time, the tank can contain at most v liters of fuel.

Sasha doesn’t like to waste money, that’s why he wants to know what is the minimum amount of money is needed to finish the trip if he can buy fuel in any city he wants. Help him to figure it out!

Input
The first line contains two integers n and v (2≤n≤100, 1≤v≤100) — the number of cities in the country and the capacity of the tank.

Output
Print one integer — the minimum amount of money that is needed to finish the trip.

Examples
Input
4 2
Output
4
Input
7 6
Output
6
Note
In the first example, Sasha can buy 2 liters for 2 dollars (1 dollar per liter) in the first city, drive to the second city, spend 1 liter of fuel on it, then buy 1 liter for 2 dollars in the second city and then drive to the 4-th city. Therefore, the answer is 1+1+2=4.

In the second example, the capacity of the tank allows to fill the tank completely in the first city, and drive to the last city without stops in other cities.


#include <stdio.h>
int n, v;
int i;
int main()
{
    int cost = 0;
    int left = 0;
    scanf_s("%d%d", &n, &v);
    for (i = 1; i <= n; i++)
    {
        if (v <= n - i)
        {
            cost += (v - left) * i;
            left += v - left;
        }
        else if (left < n - i)
        {
            cost += (n - i - left) * i;
            left += n - i - left;
        }
        left--;
    }
    printf("%d\n", cost);
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值