Codeforces 382 B. Number Busters


B. Number Busters
time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output

Arthur and Alexander are number busters. Today they‘ve got a competition.

Arthur took a group of four integers a,?b,?w,?x (0?≤?b?<?w,?0?<?x?<?w) and Alexander took integer с. Arthur and Alexander use distinct approaches to number bustings. Alexander is just a regular guy. Each second, he subtracts one from his number. In other words, he performs the assignment: c?=?c?-?1. Arthur is a sophisticated guy. Each second Arthur performs a complex operation, described as follows: if b?≥?x, perform the assignment b?=?b?-?x, if b?<?x, then perform two consecutive assignments a?=?a?-?1; b?=?w?-?(x?-?b).

You‘ve got numbers a,?b,?w,?x,?c. Determine when Alexander gets ahead of Arthur if both guys start performing the operations at the same time. Assume that Alexander got ahead of Arthur if c?≤?a.

Input

The first line contains integers a,?b,?w,?x,?c (1?≤?a?≤?2·109,?1?≤?w?≤?1000,?0?≤?b?<?w,?0?<?x?<?w,?1?≤?c?≤?2·109).

Output

Print a single integer — the minimum time in seconds Alexander needs to get ahead of Arthur. You can prove that the described situation always occurs within the problem‘s limits.

Sample test(s)
input
4 2 3 1 6
output
2
input
4 2 3 1 7
output
4
input
1 2 3 2 6
output
13
input
1 1 2 1 1
output
0

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>

using namespace std;

int main()
{
    long long int a,b,w,x,c;
    scanf("%I64d%I64d%I64d%I64d%I64d",&a,&b,&w,&x,&c);
    if(c<=a)
    {
        puts("0"); return 0;
    }

    long long ans=(a*w-c*w+b)/(x-w);

    if(abs(ans*(x-w))<abs(a*w-c*w+b)) ans++;

    printf("%I64d\n",ans);

    return 0;
}



Codeforces 382 B. Number Busters

上一篇:SSE2 Intrinsics各函数介绍


下一篇:POJ3067 Japan 线段树 || 树状数组