4 solutions

  • 1
    @ 2025-8-19 14:08:39
    
    首页
    题库
    训练
    比赛
    作业
    讨论
    评测记录
    排名
     主题库 
    许皓辰 
     100 
     #A1073A. [ABC270B] 锤子(Hammer)
    ID: 2365
    传统题
    1000ms
    256MiB
    尝试: 113
    已通过: 35
    难度:
    普及-
    上传者:
    
    jike1994
    题目描述
    高桥位于数轴的原点。他想到达坐标 
    X
    X 的目标点。
    
    在坐标 
    Y
    Y 处有一堵墙,高桥一开始无法越过。
    
    然而,在拾取坐标 
    Z
    Z 处的锤子后,他可以摧毁那堵墙并通过。
    
    判断高桥是否能到达目标点。如果能,找出他需要行走的最小总距离。
    
    输入格式
    输入从标准输入中给出,格式如下:
    
    X
    X 
    Y
    Y 
    Z
    Z
    
    输出格式
    如果高桥能到达目标点,输出他需要行走的最小总距离。如果不能,则输出 -1。
    
    样例 #1
    样例输入 #1
    10 -10 1
    样例输出 #1
    10
    样例 #2
    样例输入 #2
    20 10 -10
    样例输出 #2
    40
    样例 #3
    样例输入 #3
    100 1 1000
    样例输出 #3
    -1
    提示
    样例说明 1
    小高可以直接走到目标。
    
    样例说明 2
    目标在墙的另一半边,小高可以先拿到锤子,然后摧毁墙壁到达目标。
    
    数据范围
    −
    1000
     
    ≤
     
    X
    ,
    Y
    ,
    Z
     
    ≤
     
    1000
    −1000 ≤ X,Y,Z ≤ 1000
    X
    ,
    Y
    ,
    Z
    X,Y,Z 互不相同,且都不为 0
    输入中的所有值都是整数。
     进入在线编程模式 (Alt+E)
     递交
     讨论 (0)
     题解 (3)
     文件
     统计
     复制
    状态
    评测队列
    服务状态
    开发
    开源
    API
    支持
    帮助
    QQ 群
    关于联系我们隐私服务条款版权申诉 Language 兼容模式 主题 
    蜀ICP备2022008388号-1Worker 0, 40msPowered by Hydro v4.19.1 Community
    
    
    
    • 0
      @ 2025-7-16 16:27:51
      #include<bits/stdc++.h>
      using namespace std;
      int main()
      {
      	int x,y,z;
      	cin>>x>>y>>z;
      	if(y<0) 
      	{
      		x=-x;
      		y=-y;
      		z=-z;
      	}
      	if(x<y)
      	{
      		cout<<abs(x);
      	}
      	else
      	{
      		if(z>y)
      		{
      			cout<<-1;
      		}
      		else
      		{
      			cout<<abs(z)+abs(x-z); 
      		}
      	}
      	return 0;
      }
      
      
      
      • -1
        @ 2025-7-22 11:14:44
        #include<bits/stdc++.h>
        using namespace std;
        int main()
        {
        	int x,y,z,s=0;
        	cin>>x>>y>>z;
        	if(x>0)
        	{
        		if(y>x || y<0) s=x;
        		else
        		{
        			if(z<0) s=2*abs(z)+x;
        			else if(z<y) s=x;
        			else s=-1;
        		}
        	}
        	else
        	{
        		if(y>0 || y<x) s=abs(x);
        		else
        		{
        			if(z>0) s=2*z+abs(x);
        			else if(z>y) s=abs(x);
        			else s=-1;
        		}
        	}
        	cout<<s;
        	return 0;
        }
        
        • -1
          @ 2025-4-18 18:42:56
          #include<bits/stdc++.h>
          using namespace std;
          int main()
          {
          	int x,y,z;
          	cin>>x>>y>>z;
          	if(y<0) 
          	{
          		x=-x;
          		y=-y;
          		z=-z;
          	}
          	if(x<y)
          	{
          		cout<<abs(x);
          	}
          	else
          	{
          		if(z>y)
          		{
          			cout<<-1;
          		}
          		else
          		{
          			cout<<abs(z)+abs(x-z); 
          		}
          	}
          	return 0;
          }
          
          
          • 1

          Information

          ID
          2365
          Time
          1000ms
          Memory
          256MiB
          Difficulty
          3
          Tags
          (None)
          # Submissions
          119
          Accepted
          37
          Uploaded By