codeforces 1288A Deadline

A. Deadline

time limit per test2 seconds
memory limit per test256 megabytes
inputstandard input
outputstandard output
Adilbek was assigned to a special project. For Adilbek it means that he has n days to run a special program and provide its results. But there is a problem: the program needs to run for d days to calculate the results.

Fortunately, Adilbek can optimize the program. If he spends x (x is a non-negative integer) days optimizing the program, he will make the program run in ⌈dx+1⌉ days (⌈a⌉ is the ceiling function: ⌈2.4⌉=3, ⌈2⌉=2). The program cannot be run and optimized simultaneously, so the total number of days he will spend is equal to x+⌈d / (x+1)⌉.

Will Adilbek be able to provide the generated results in no more than n days?

Input

The first line contains a single integer T (1≤T≤50) — the number of test cases.

The next T lines contain test cases – one per line. Each line contains two integers n and d (1≤n≤109, 1≤d≤109) — the number of days before the deadline and the number of days the program runs.

Output

Print T answers — one per test case. For each test case print YES (case insensitive) if Adilbek can fit in n days or NO (case insensitive) otherwise.

Example

input

3
1 1
4 5
5 11

output

YES
YES
NO

Note

In the first test case, Adilbek decides not to optimize the program at all, since d≤n.

In the second test case, Adilbek can spend 1 day optimizing the program and it will run ⌈52⌉=3 days. In total, he will spend 4 days and will fit in the limit.

In the third test case, it’s impossible to fit in the limit. For example, if Adilbek will optimize the program 2 days, it’ll still work ⌈112+1⌉=4 days.

题意:

有一个程序有要在n天的时间内运行完,这个程序要运行d天,可以选择一个数字x为优化的天数,然后运行的话就要⌈d / (x+1)⌉天了,之后总共就用了x+⌈d / (x+1)⌉天。

思路:

暴力枚举所有数,如果符合条件就输出YES,否则输出NO。

#include <iostream>
#include <cstring>
#include <cstdio>
#include <cmath>
using namespace std;
template <class T>
inline void read(T &ret) {
    char c;
    int sgn;
    if (c = getchar(), c == EOF) return ;
    while (c != '-' && (c < '0' || c > '9')) c = getchar();
    sgn = (c == '-') ? -1:1;
    ret = (c == '-') ? 0:(c - '0');
    while (c = getchar(), c >= '0' && c <= '9') ret = ret * 10 + (c - '0');
    ret *= sgn;
    return ;
}
inline void out(int x) {
    if (x > 9) out(x / 10);
    putchar(x % 10 + '0');
}
int main() {
    int t, n, d;
    read(t);
    while (t--) {
        read(n), read(d);
        if (d <= n) {
            printf("YES\n");
            continue;
        }
        bool flag = false;
        for (int i = 1; i < n; i++) {
            int x = ceil(double(d) / (double)(i + 1));
            if (i + x <= n) {
                printf("YES\n");
                flag = true;
                break;
            }
        }
        if (!flag) printf("NO\n");
    }
    return 0;
}

发布了360 篇原创文章 · 获赞 13 · 访问量 2万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览