日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Not Equal on a Segment CodeForces - 622C

發(fā)布時(shí)間:2023/12/10 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Not Equal on a Segment CodeForces - 622C 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

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 題意就是 在一串?dāng)?shù)字中給出前后區(qū)間 和x 找出區(qū)間內(nèi)與x不等的元素下標(biāo) 這道題可以用一個(gè)特殊的結(jié)構(gòu)pos數(shù)組 記錄與此元素相同連續(xù)串的首元素位置 如果這個(gè)元素與 前面一個(gè)元素的值是相同的 就記錄下pos[i]=pos[i-1]? 這種情況就會(huì)導(dǎo)致 如果出現(xiàn) 1 1 1連續(xù)的1 那么他們的pos 就會(huì)變成 ? ? ? ? ? ? ? ? ? ? ? ? ?x x x 只要是連續(xù)相同 那么后面的值得元素的pos就會(huì)與第一個(gè)值得元素相同? 連續(xù)相同元素的線段 指向最初的那個(gè) 而最初的元素一定是他自身的位置 也就是判斷 如果這個(gè)pos[r]<=l && r處值為x 也就說 他是一只連續(xù)到r的 一定是-1? ? 如果這個(gè)最右端的元素不是x直接輸出即可 如果最右端的是x且pos[r]>l也就說 中間間斷過 否則這個(gè)值一定會(huì)<=l ? 那么輸出pos[r]即為與他相同元素的第一個(gè) 由于大于l那么-1 必然與他不相等 而且這個(gè)位置必然>=l? 也就是構(gòu)造一個(gè) ?? 連續(xù)元素的鏈結(jié)構(gòu) 把相同元素都指到第一個(gè)元素的位置 然后如果 不等 就把它指向自身 表示這個(gè)值元素的起始位置 那么他前一個(gè)元素必然與他不相等? 當(dāng)時(shí)想了好久用來快排二分啥的都沒過 。。。 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; }

總結(jié)

以上是生活随笔為你收集整理的Not Equal on a Segment CodeForces - 622C的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。