Not a member of Pastebin yet?
                        Sign Up,
                        it unlocks many cool features!                    
                - #include <iostream>
 - #include <cstdio>
 - #include <cstring>
 - #include <algorithm>
 - using namespace std;
 - const int N = 70005;
 - class node {
 - public:
 - int num;
 - int ord;
 - } a[N];
 - bool cmp(node a, node b){
 - if(a.num == b.num) return a.ord < b.ord;
 - return a.num < b.num;
 - }
 - int bin_search(int t, int n) {
 - int l, r, mid;
 - l = 1; r = n;
 - while(l <= r) {
 - mid = (l + r) >> 1;
 - if(t == a[mid].num) return mid;
 - else if(t < a[mid].num) r = mid-1;
 - else l = mid+1;
 - }
 - return 0;
 - }
 - int main() {
 - //freopen("data.in", "r", stdin);
 - int n, i, q, l, r, t, d, flag;
 - while(~scanf("%d", &n)) {
 - for(i = 1; i <= n; i++) {
 - scanf("%d", &a[i].num);
 - a[i].ord = i;
 - }
 - stable_sort(a+1, a+n+1, cmp);
 - scanf("%d", &q);
 - while(q--) {
 - scanf("%d%d%d", &l, &r, &t);
 - i = bin_search(t, n);
 - d = i; flag = 0;
 - //避免重复的数字找不到的情况
 - while(t == a[d].num && d > 0) {
 - if(a[d].ord >= l && a[d].ord <= r) {
 - printf("1"); flag = 1; break;
 - } else d--;
 - }
 - if(flag) continue;
 - d = i;
 - while(t == a[d].num && d <= n) {
 - if(a[d].ord >= l && a[d].ord <= r) {
 - printf("1"); flag = 1; break;
 - }
 - else d++;
 - }
 - if(flag) continue;
 - printf("0");
 - }
 - printf("\n");
 - }
 - return 0;
 - }
 
Advertisement
 
                    Add Comment                
                
                        Please, Sign In to add comment