CodeForces 622C Not Equal on a Segment

来源:互联网 发布:为什么江老是被黑 知乎 编辑:程序博客网 时间:2024/06/03 16:01

利用一个辅助数组存序号就行了。

#include <iostream>#include <cstdio>const int MAX = 2e5 + 5;int arr[MAX];int pre[MAX];int main(){int n, q;scanf("%d%d", &n, &q);for (int i = 1; i <= n; ++i){scanf("%d", &arr[i]);if (arr[i] == arr[i - 1])pre[i] = pre[i - 1];elsepre[i] = i;}/*for (int i = 1; i <= n; ++i){printf("%d ", pre[i]);}puts("");*/int st, ed, val;for (int i = 0; i != q; ++i){scanf("%d%d%d", &st, &ed, &val);if (arr[ed] == val && pre[ed] == pre[st])printf("-1\n");else{if (arr[ed] != val)printf("%d\n", ed);elseprintf("%d\n", pre[ed] - 1);}}return 0;}


0 0