Not Equal on a Segment CodeForces - 622C

You are given array a with n integers and m queries. The i-th query is given with three integers li, ri, xi.

For the i-th query find any position pi (li ≤ pi ≤ ri) so that api ≠ xi.

Input

The first line contains two integers n, m (1 ≤ n, m ≤ 2·105) — the number of elements in a and the number of queries.

The second line contains n integers ai (1 ≤ ai ≤ 106) — the elements of the array a.

Each of the next m lines contains three integers li, ri, xi (1 ≤ li ≤ ri ≤ n, 1 ≤ xi ≤ 106) — the parameters of the i-th query.

Output

Print m lines. On the i-th line print integer pi — the position of any number not equal to xi in segment [li, ri] or the value  - 1 if there is no such number.

Example
Input
6 4
1 2 1 1 3 5
1 4 1
2 6 2
3 4 1
3 4 2
Output
2
6
-1
4
 
 
 
题意就是 在一串数字中给出前后区间 和x 找出区间内与x不等的元素下标 
 
这道题可以用一个特殊的结构pos数组 记录与此元素相同连续串的首元素位置
	如果这个元素与 前面一个元素的值是相同的 就记录下pos[i]=pos[i-1] 
	这种情况就会导致 如果出现 1 1 1连续的1 那么他们的pos 就会变成
	                          x x x
	只要是连续相同 那么后面的值得元素的pos就会与第一个值得元素相同 
	连续相同元素的线段 指向最初的那个 而最初的元素一定是他自身的位置
	也就是判断 如果这个pos[r]<=l && r处值为x 也就说 他是一只连续到r的 一定是-1 
		   如果这个最右端的元素不是x直接输出即可
		   如果最右端的是x且pos[r]>l也就说 中间间断过 否则这个值一定会<=l
			   那么输出pos[r]即为与他相同元素的第一个 由于大于l那么-1 必然与他不相等 而且这个位置必然>=l 
					
	也就是构造一个   
		连续元素的链结构 把相同元素都指到第一个元素的位置
	然后如果 不等 就把它指向自身 表示这个值元素的起始位置
	那么他前一个元素必然与他不相等 
当时想了好久用来快排二分啥的都没过 。。。 ORZ
 
code:
#include<bits/stdc++.h>
using namespace std;
int a[200010],pos[200010];
int main()
{int n,m;scanf("%d%d",&n,&m);for(int i=1;i<=n;i++){scanf("%d",&a[i]);if(a[i]==a[i-1])pos[i]=pos[i-1];else pos[i]=i;	}while(m--){int s,e,x;scanf("%d%d%d",&s,&e,&x);if(a[e]!=x)printf("%d\n",e);else if(a[e]==x&&pos[e]<=s)puts("-1");else if(a[e]==x&&pos[e]>s)printf("%d\n",pos[e]-1);}return 0;
} 


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/425736.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[剑指offer][JAVA]面试题第[05]题[替换空格][StringBuilder/Buffer]

【问题描述】[简单] 请实现一个函数&#xff0c;把字符串 s 中的每个空格替换成"%20"。示例 1&#xff1a;输入&#xff1a;s "We are happy." 输出&#xff1a;"We%20are%20happy."限制&#xff1a;0 < s 的长度 < 10000【解答思路】 …

计算机表格最高分,excel表格里怎样算最高分

在Excel中录入好数据以后进行数据统计&#xff0c;再统计过后多数需要算出最高值得&#xff0c;有些朋友可能不太会求最高值&#xff0c;接下来是学习啦小编为大家带来的excel如何求最高值的方法&#xff0c;欢迎大家来到学习啦学习。excel表格算最高分的方法1&#xff1a;下图…

html:(14):给div命名和table标签

给div命名&#xff0c;使逻辑更加清晰 在上一小节中&#xff0c;我们把一些标签放进<div>里&#xff0c;划分出一个独立的逻辑部分。为了使逻辑更加清晰&#xff0c;我们可以为这一个独立的逻辑部分设置一个名称&#xff0c;用id属性来为<div>提供唯一的名称&…

缓存过期时间的设置

使用 slidingExpiration 时间时&#xff0c;如果再次命中&#xff0c;将延长缓存项目的生命期使用 expireTime 时&#xff0c;无论是否命中&#xff0c;时间到时&#xff0c;都将失效。 转载于:https://www.cnblogs.com/yyj/p/10373882.html

不要62-三种写法

杭州人称那些傻乎乎粘嗒嗒的人为62&#xff08;音&#xff1a;laoer&#xff09;。 杭州交通管理局经常会扩充一些的士车牌照&#xff0c;新近出来一个好消息&#xff0c;以后上牌照&#xff0c;不再含有不吉利的数字了&#xff0c;这样一来&#xff0c;就可以消除个别的士司机…

杜克大学计算机硕士要几年,2017杜克大学春季不招计算机专业的硕士?

原标题&#xff1a;2017杜克大学春季不招计算机专业的硕士&#xff1f;计算机科学&#xff0c;理工科中常申请的一个专业&#xff0c;每一年都会有大批的计算机同学奔赴战场&#xff0c;准备材料&#xff0c;刷托福GRE考高分&#xff0c;只为等待自己心中梦寐以求学校的那片橄榄…

[剑指offer][JAVA]面试题第[06]题[从尾到头打印链表][栈][递归]

【问题描述】[简单] 输入一个链表的头节点&#xff0c;从尾到头反过来返回每个节点的值&#xff08;用数组返回&#xff09;。示例 1&#xff1a;输入&#xff1a;head [1,3,2] 输出&#xff1a;[2,3,1]限制&#xff1a; 0 < 链表长度 < 10000【解答思路】 1. 常规思路…

jQuery使用(八):运动方法

show()、hide()、toggle()参数&#xff1a;null或(duration,easing,callblack)fadeIn()、fadeout()、fadeToggle()、fadeTo()参数&#xff1a;null或(duration,[opacity],easing,callblack)slideDown(),slideUp(),slideToggle()参数&#xff1a;null或(duration,easing,callbla…

服务器重装后怎么装系统,服务器如何安装系统,小编教你如何安装

相对于普通PC来说&#xff0c;服务器有很多优点&#xff0c;比如在工作上的效率会比PC高出许多&#xff0c;但也有一些缺点其中的服务器系统的安装有时候缺乏人性化就是原因之一了。第一次安装服务器系统&#xff0c;会遇到很多麻烦&#xff0c;下面&#xff0c;小编就给大家带…

html:(15):用css样式给表格添加边框和caption标签

用css样式&#xff0c;为表格加入边框 Table 表格在没有添加 css 样式之前&#xff0c;是没有边框的。这样不便于我们后期合并单元格知识点的讲解&#xff0c;所以在这一节中我们为表格添加一些样式&#xff0c;为它添加边框。 在右侧代码编辑器中添加如下代码&#xff1a; …

Java集合容器面试题

文章目录集合容器概述什么是集合集合的特点集合和数组的区别使用集合框架的好处常用的集合类有哪些&#xff1f;List&#xff0c;Set&#xff0c;Map三者的区别&#xff1f;List、Set、Map 是否继承自 Collection 接口&#xff1f;List、Map、Set 三个接口存取元素时&#xff0…

Ubuntu Linux 解决 bash ./ 没有那个文件或目录 的方法

Ubuntu Linux 解决 bash ./ 没有那个文件或目录 的方法 遇到这个问题是为了sublime配置c/c 编译环境 当运行程序打开终端时 出现以上问题 先新建build system 用以下代码 {"shell_cmd": "g \"${file}\" -o \"${file_path}/${file_base_name}\&qu…

sql server 备份计划

SSMS 1.管理 2.维护计划 3.维护计划向导 或者 1. server 代理 2. 作业 3. 新建作业 备份计划时间尽量选在闲时&#xff0c; 例如午夜 转载于:https://www.cnblogs.com/dream-life/p/10380621.html

荒野行动服务器维护,荒野行动11月30日维护更新完毕服务器已开放 ! 更新优化内容说明...

荒野行动11月30日服务器维护完了&#xff0c;这里手机乐园寻隐者不遇小编给大家带来了具体的优化和更新的内容&#xff0c;咱们往下看&#xff01;亲爱的荒野精英们&#xff1a;欢迎加入《荒野行动》&#xff0c;享受畅快的射击竞技游戏。我们计划在北京时间11月30日凌晨6-8点&…

html:(16):a标签

使用<a>标签&#xff0c;链接到另一个页面 使用<a>标签可实现超链接&#xff0c;它在网页制作中可以说是无处不在&#xff0c;只要有链接的地方&#xff0c;就会有这个标签。 语法&#xff1a; <a href"目标网址" title"鼠标滑过显示的文本…

CodeForces - 660C Hard Process

题意就是 在这个数串中插入1构成一个最长的连续1的区间串 如何做&#xff1f;我们可以对长度进行二分 从1到n二分长度 然后在对这个长度拿到数串中查看是否能构成最终我们想要的最长匹配串 这里我们可以利用一个前缀和数组 统计从1到i的0的个数 由于必然是递增数组 就满足了二…

[Leedcode][JAVA][第198题][打家劫舍][动态规划]

【问题描述】[简单] 你是一个专业的小偷&#xff0c;计划偷窃沿街的房屋。每间房内都藏有一定的现金&#xff0c;影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统&#xff0c;如果两间相邻的房屋在同一晚上被小偷闯入&#xff0c;系统会自动报警。给定一个代表…

图像质量评价之数据库

视频质量专家组&#xff08;Video Quality Experts Group, VQEG&#xff09;发起的评价算法性能校准项目的主要思想是通过组织主观实验获取图像的主观质量&#xff0c;以主客观质量的一致性来判断客观评价算法的性能。目前常用的数据主要有以下8种&#xff1a; 1&#xff09;LI…

html:(17):img标签和表单标签

认识<img>标签&#xff0c;为网页插入图片 在网页的制作中为使网页炫丽美观&#xff0c;肯定是缺少不了图片&#xff0c;可以使用<img>标签来插入图片。 语法&#xff1a; <img src"图片地址" alt"下载失败时的替换文本" title "提…

技嘉服务器主板装系统,技嘉主板bios设置图解教程

BIOS(基本输入/输出系统)是被固化在计算机CMOS RAM芯片中的一组程序&#xff0c;为计算机提供最初的、最直接的硬件控制。正确设置BIOS可大大提高系统性能。技嘉主板bios设置方法是什么&#xff0c;很多人很多时候都需要进入bios设置&#xff0c;对于电脑高手来说&#xff0c;这…