当前位置: 首页 > news >正文

坠落的蚂蚁(暑假每日一题 40)

一根长度为 1 1 1 米的木棒上有若干只蚂蚁在爬动。

它们的速度为每秒一厘米或静止不动,方向只有两种,向左或者向右。

如果两只蚂蚁碰头,则它们立即交换速度并继续爬动。

三只蚂蚁碰头,则两边的蚂蚁交换速度,中间的蚂蚁仍然静止。

如果它们爬到了木棒的边缘( 0 0 0 100 100 100 厘米处)则会从木棒上坠落下去。

在某一时刻蚂蚁的位置各不相同且均在整数厘米处(即 1 , 2 , 3 , … 99 1,2,3,…99 12399 厘米),有且只有一只蚂蚁 A A A 速度为 0 0 0,其他蚂蚁均在向左或向右爬动。

给出该时刻木棒上的所有蚂蚁位置和初始速度,找出蚂蚁 A A A 从此时刻到坠落所需要的时间。

输入格式
第一行包含一个整数表示蚂蚁的个数 N N N,之后共有 N N N 行,每一行描述一只蚂蚁的初始状态。

每个初始状态由两个整数组成,中间用空格隔开,第一个数字表示初始位置厘米数 P P P,第二个数字表示初始方向,−1 表示向左,1 表示向右,0 表示静止。

输出格式
蚂蚁 A A A 从开始到坠落的时间。若不会坠落,输出 Cannot fall!

数据范围
2 ≤ N ≤ 99 , 2≤N≤99, 2N99,
1 ≤ P ≤ 99 1≤P≤99 1P99
输入样例:

4
10 1
90 0
95 -1
98 -1

输出样例:

98

#include<iostream>
#include<vector>
#include<algorithm>

#define x first
#define y second

using namespace std;

typedef pair<int, int> PII;

int main(){
    
    int n;
    cin >> n;
    
    vector<PII> q;
    int A;
    for(int i = 0; i < n; i++){
        int x, y;
        cin >> x >> y;
        if(!y) A = x;
        q.push_back({x, y});
    }
    
    sort(q.begin(), q.end());
    
    vector<int> l, r;
    for(auto &p: q){
        
        if(!p.y || p.x < A && p.y < 0 || p.x > A && p.y > 0)
            continue;
        if(p.x < A) l.push_back(p.x);
        else r.push_back(p.x);
    }
    
    if(l.size() == r.size()) cout << "Cannot fall!" << endl;
    else if(l.size() < r.size()) cout << r[l.size()] << endl;
    else cout << 100 - l[l.size() - r.size() - 1] << endl;
    
    return 0;
}

相关文章:

  • TV蓝牙无法被搜索问题解决记录:REQUEST_DISCOVERABLE ActivityNotFoundException
  • 【JavaScript 逆向】猿人学 web 第六题:回溯
  • 最牛逼的 Java 日志框架,性能无敌,横扫所有对手
  • CREO:CREO软件之装配设计界面的简介、装配图设计流程、案例应用(图文教程)之详细攻略
  • 【赛码网刷题】动态规划之上台阶
  • Java 的开发效率究竟比 C++ 高在哪里?
  • python random应用实例 从可选池随机选取指定个数的元素并随机排序
  • 【Java成王之路】EE初阶第二十二篇 博客系统(页面设计)
  • 编译mtd-utils(使用uclibc编译)
  • (附源码)spring boot北京冬奥会志愿者报名系统 毕业设计 150947
  • springboot网络安全考核平台设计毕业设计源码042335
  • 神经网络常用的训练方式,人工神经网络训练过程
  • WebSocket快速入门及基本使用
  • 牛视源码定制,抖音矩阵系统,别和谐啊、、、
  • 深度神经网络的可解释性,深度神经网络简单介绍
  • 【399天】跃迁之路——程序员高效学习方法论探索系列(实验阶段156-2018.03.11)...
  • AzureCon上微软宣布了哪些容器相关的重磅消息
  • Computed property XXX was assigned to but it has no setter
  • extract-text-webpack-plugin用法
  • golang 发送GET和POST示例
  • HashMap ConcurrentHashMap
  • js数组之filter
  • node 版本过低
  • Odoo domain写法及运用
  • Promise初体验
  • Promise面试题2实现异步串行执行
  • SegmentFault 技术周刊 Vol.27 - Git 学习宝典:程序员走江湖必备
  • SQLServer之创建数据库快照
  • Stream流与Lambda表达式(三) 静态工厂类Collectors
  • 闭包--闭包之tab栏切换(四)
  • 不用申请服务号就可以开发微信支付/支付宝/QQ钱包支付!附:直接可用的代码+demo...
  • 记录:CentOS7.2配置LNMP环境记录
  • 聊一聊前端的监控
  • 排序(1):冒泡排序
  • 前端技术周刊 2019-02-11 Serverless
  • 手写双向链表LinkedList的几个常用功能
  • 微信小程序上拉加载:onReachBottom详解+设置触发距离
  • 一个JAVA程序员成长之路分享
  • 一些关于Rust在2019年的思考
  • Android开发者必备:推荐一款助力开发的开源APP
  • MPAndroidChart 教程:Y轴 YAxis
  • Python 之网络式编程
  • scrapy中间件源码分析及常用中间件大全
  • 湖北分布式智能数据采集方法有哪些?
  • # Maven错误Error executing Maven
  • #微信小程序:微信小程序常见的配置传值
  • $$$$GB2312-80区位编码表$$$$
  • (webRTC、RecordRTC):navigator.mediaDevices undefined
  • (附源码)基于SSM多源异构数据关联技术构建智能校园-计算机毕设 64366
  • (转)http协议
  • (转)Mysql的优化设置
  • (转)Scala的“=”符号简介
  • (转)VC++中ondraw在什么时候调用的
  • **登录+JWT+异常处理+拦截器+ThreadLocal-开发思想与代码实现**
  • ./indexer: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object fil