Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #pragma comment(linker, "/STACK:16777216")
- //#include "stdafx.h"
- #include <iostream>
- #include <stdio.h>
- #include <cmath>
- #include <set>
- #include <map>
- #include <stack>
- #include <queue>
- #include <list>
- #include <vector>
- #include <string>
- #include <algorithm>
- #include <bitset>
- using namespace std;
- #define FOR(i,a,b) for(int i=(a);i<(b);++i)
- #define FORN(i,a,b) for(int i=(a);i<=(b);++i)
- #define SQR(x) (x)*(x)
- #define INF 1000*1000*1000
- #define EPS 1e-11
- typedef long long LL;
- map<int,vector<int> > m;
- int main()
- {
- //freopen("input.txt","r",stdin);
- //freopen("output.txt","w",stdout);
- int n;
- scanf("%d",&n);
- FOR(i,0,n)
- {
- int k;
- scanf("%d",&k);
- vector<int> v;
- v.push_back(i+1);
- if (!m.insert(make_pair(k,v)).second) m[k].push_back(i+1);
- }
- int k;
- scanf("%d",&k);
- FOR(i,0,k)
- {
- int a,b,val;
- scanf("%d%d%d",&a,&b,&val);
- if (m.find(val)==m.end()) printf("0");
- else
- {
- vector<int> v=m[val];
- int l=0,r=v.size();
- int res=0;
- while (l<r)
- {
- int mid=(l+r)/2;
- if (v[mid]>=a && v[mid]<=b)
- {
- res=1;
- break;
- }
- v[mid]>b ? r=mid : l=mid+1;
- }
- printf("%d",res);
- }
- }
- return 0;
- }
Add Comment
Please, Sign In to add comment