比赛 |
20151019 |
评测结果 |
AAAWAWWWWW |
题目名称 |
爬山 |
最终得分 |
40 |
用户昵称 |
liuliuliu |
运行时间 |
0.003 s |
代码语言 |
C++ |
内存使用 |
0.31 MiB |
提交时间 |
2015-10-19 21:04:56 |
显示代码纯文本
- #include <iostream>
- #include <cstdio>
- #include <cstring>
- #include <cmath>
- #include <algorithm>
- #include <climits>
- using namespace std;
-
- long long n;
- int d,a,b;//n看做还移动几次,a表示较低点,b表示较高点
- int cha;//cha表示两点之间的高度差
- bool f;
- int main()
- {
- freopen("mountain.in","r",stdin);
- freopen("mountain.out","w",stdout);
- scanf("%d%d%d%d",&n,&d,&a,&b);
- n--;
- if(a<0 && b<0)
- {
- a+=1000;
- b+=1000;
- f=true;
- }
- if(a>b)
- {
- int t;
- t=a;a=b;b=t;
- }
- /*cha=b-a;
- while(cha>d)
- {
- n--;
- a+=d
- cha=b-a;
- }*/
- cha=b-a;
- n-=(cha/d);
- cha%=d;
- if(f)
- {
- a-=1000;
- b-=1000;
- }
- if(n==0)
- {
- cout<<b<<endl;
- return 0;
- }
- else if(cha==0)
- {
- cout<<d*(n/2)+b<<endl;
- return 0;
- }
- if(n%2==1)
- cout<<b+d*(n/2)<<endl;
- else
- cout<<a+d*(n/2)<<endl;
-
- return 0;
- }