Caso # | Resultado | Tiempo | Memoria |
---|---|---|---|
#1 |
Correcto
|
0.002 s | 0 KBi |
#2 |
Correcto
|
0.007 s | 61 KBi |
#3 |
Correcto
|
0.01 s | 0 KBi |
#4 |
Correcto
|
0.115 s | 2 KBi |
#5 |
Correcto
|
0.226 s | 2 KBi |
#6 |
Correcto
|
0.759 s | 12 KBi |
#7 |
Correcto
|
0.543 s | 12 KBi |
#8 |
Correcto
|
0.911 s | 12 KBi |
#include <bits/stdc++.h> #define REP(i, n) for (int i = 0; i < n; i++) #define pb push_back #define ff first #define ss second #define ii pair<int, int> #define vi vector<int> #define vii vector<ii> #define lli long long int #define fast_io \ ios_base::sync_with_stdio(0); \ cin.tie(0); \ cout.tie(0); using namespace std; ostream &operator<<(ostream &os, const vector<int> &v) { for (auto const &i : v) { os << i << " "; } os << endl; return os; } const lli mod = (1e9) + 7; const int N = 1e4 + 1; int main() { fast_io; int n; cin >> n; int a[n]; map<int, vi> dir; REP(i, n) { cin >> a[i]; dir[a[i]].pb(i); } int c; cin >> c; while (c--) { int l, r, x; cin >> l >> r >> x; if(!dir.count(x)){ cout<<0<<endl; continue; } auto posL = lower_bound(dir[x].begin(),dir[x].end(),l); auto posR = lower_bound(dir[x].begin(),dir[x].end(),r); //cout<<dir[x]<<endl; int disL = posL - dir[x].begin(); int disR = posR - dir[x].begin(); //cout<<*posL<<" -> "<<*posR<<endl; //cout<<disL<<" : "<<disR<<endl; int ans = disR - disL + 1; if(*posR > r || posR == dir[x].end())ans--; cout<<ans<<endl; } return 0; }