• API
• FAQ
• Tools
• Archive
SHARE
TWEET

# Untitled

a guest Feb 10th, 2016 1,926 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
1. #include <bits/stdc++.h>
2.
3. #define forn(i, n) for (int i = 0; i < int(n); i++)
4. #define ford(i, n) for (int i = int(n) - 1; i >= 0; i--)
5. #define fore(i, l, r) for (int i = int(l); i < int(r); i++)
6. #define correct(x, y, n, m) (0 <= (x) && (x) < (n) && 0 <= (y) && (y) < (m))
7. #define all(a) (a).begin(), (a).end()
8. #define sz(a) int((a).size())
9. #define pb(a) push_back(a)
10. #define mp(x, y) make_pair((x), (y))
11. #define x first
12. #define y second
13.
14. using namespace std;
15.
16. typedef long long li;
17. typedef long double ld;
18. typedef pair<int, int> pt;
19.
20. template<typename X> inline X abs(const X& a) { return a < 0? -a: a; }
21. template<typename X> inline X sqr(const X& a) { return a * a; }
22.
23. const int INF = int(1e9);
24. const li INF64 = li(1e18);
25. const ld EPS = 1e-9, PI = 3.1415926535897932384626433832795;
26.
27. const int N = 200200;
28.
29. int n, m;
30. int a[N];
31. int l[N], r[N], x[N];
32.
34.     if (!(cin >> n >> m)) return false;
35.     forn(i, n) assert(scanf("%d", &a[i]) == 1);
36.     forn(i, m) {
37.         assert(scanf("%d%d%d", &l[i], &r[i], &x[i]) == 3);
38.         l[i]--, r[i]--;
39.     }
40.     return true;
41. }
42.
43. int z[N];
44.
45. inline void solve() {
46.     z[0] = -1;
47.     fore(i, 1, n) {
48.         if (a[i - 1] != a[i]) z[i] = i - 1;
49.         else z[i] = z[i - 1];
50.     }
51.
52.     forn(i, m) {
53.         if (a[r[i]] != x[i]) printf("%d\n", r[i] + 1);
54.         else if (z[r[i]] >= l[i]) printf("%d\n", z[r[i]] + 1);
55.         else puts("-1");
56.     }
57. }
58.
59. int main() {
60. #ifdef SU1
61.     assert(freopen("input.txt", "rt", stdin));
62.     //assert(freopen("output.txt", "wt", stdout));
63. #endif
64.
65.     cout << setprecision(10) << fixed;
66.     cerr << setprecision(5) << fixed;
67.