题目链接:https://codeforces.com/contest/534/problem/B
题目大意:初速度v1,末速度v2,每次速度最多变d,问t秒最远飞多远
题目思路:v1+i*d是v1初速度在i+1秒能到的最高点,v2+(t-1-i)*d是想要最终在第t秒到达v2速度的最高点,二者取最小值便是这一秒能够达到的最大值,将所有最大值加起来就是全程最大值
以下是代码:
#include<bits/stdc++.h>
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<math.h>
using namespace std;
#define inf 0x3f3f3f3f
#define rep(i,a,b) for(int i=a;i<=b;i++)
#define per(i,a,b) for(int i=a;i>=b;i--)
#define ll long long
const int MAXN = 5e5+5;
const int MOD = 1e9+7;
int v1,v2,t,d;
int main()
{
while(~scanf("%d%d%d%d",&v1,&v2,&t,&d))
{
int ans=0;
rep(i,0,t-1){
ans+=min(v1+i*d,v2+(t-1-i)*d);
}
cout<<ans<<endl;
}
return 0;
}