Codeforces 821 B. Okabe and Banana Trees

来源:互联网 发布:linux下环境变量设置 编辑:程序博客网 时间:2024/06/05 04:39
题意:

在一个坐标系内,给定一个函数 y=xm+b,求一个以原点和函数交点为顶点的矩形,并且矩形内坐标和最大。
样例解释

算法:模拟
代码:
#include <bits/stdc++.h>/*#include <algorithm>#include <cstring>#include <cmath>#include <cstdio>#include <iostream>#include <map>#include <queue>#include <vector>#include <set>*/using namespace std;typedef long long LL;typedef double DB;typedef unsigned int UI;typedef pair<int, int> PII;const int inf = 0x7f7f7f7f;#define rdi() read<int>()#define rdl() read<LL>()#define rds(a) scanf("%s", a)#define mk(i, j) make_pair(i, j)#define pb push_back#define fi first#define se second#define For(i, j, k) for (int i = j; i <= k; i ++)#define Rep(i, j, k) for (int i = j; i >= k; i --)#define Edge(i, u) for (int i = head[u]; i; i = e[i].nxt)template<typename t> t read() {    t x = 0; int f = 1; char c = getchar();    while (c > '9' || c < '0') f = c == '-' ? -1 : 1 , c = getchar();    while (c >= '0' && c <= '9') x = x * 10 + c - 48 , c = getchar();    return x * f;}template<typename t> void write(t x) {    if (x < 0){        putchar('-'), write(-x);        return;    }    if (x >= 10) write(x / 10);    putchar(x % 10 + 48);}long long ans, t, m, b, x, y;int main() {//  freopen(".in", "r", stdin);//  freopen(".out", "w", stdout);    m = rdi(), b = rdi();    x = -m * -b;    for (int i = 0; i <= x; i += m) {        y = i / -m + b;        t = 0;        t = t + 1ll * (i + 1) * (1ll * y * (y + 1)) / 2 + 1ll * (i + 1) * i / 2 * (y + 1);        ans = max(t, ans);    }    write(ans);    return 0;}