#include using namespace std; using ll = long long; using ull = unsigned long long; using ld = long double; using pll = pair; using vll = vector; using vpll = vector; #define pb push_back #define FOR(i, m, n) for (ll i(m); i < n; ++i) #define REP(i, n) FOR(i, 0, n) #define F(n) REP(i, n) #define FF(n) REP(j, n) #define FFF(n) REP(k, n) #define D(x) //cerr << "D(" << #x << "): " << x << endl #define EPS (1e-10) #define INF (1LL<<61) #define CL(A, I) memset(A, I, sizeof(A)) #define all(x) begin(x), end(x) #define IN(n) ll n; cin >> n; #define x first #define y second void ga(ll N, ll* A){F(N) cin >> A[i];} #define MAX 10000 #define LMAX 20 ll A[MAX]; ll T[MAX]; ll M[MAX][MAX]; ll Ma[MAX][MAX]; ll S[MAX]; ll N; void buildRMiQ() { F(N) M[i][0] = i; ll LN=(ll)log2(N); FOR(j, 1, LN+1) for(ll i=0; i+(1<A[Ma[i+(1<<(j-1))][j-1]]) Ma[i][j]=Ma[i][j-1]; else Ma[i][j]=Ma[i+(1<<(j-1))][j-1]; } ll queryRMaQ(ll i, ll j) { ll k = (ll)log2(j-i+1); if(A[Ma[i][k]] > A[Ma[j-(1<> N; F(N) { cin >> T[i]; cin >> A[i]; S[i] = A[i] + (i ? S[i-1]:0); } buildRMiQ(); buildRMaQ(); IN(n); F(n) { string a, b; ll val; cin >> b >> a >> val; ll res = 0; F(N) { int ind = lower_bound(T,T+N,T[i]-val)-T; D(ind); if (ind == i) continue; if (a == "avg") { ll avg = S[i-1] - (ind ? S[ind-1] : 0); if (b == "gt" and A[i]*(i-ind) > avg) res++; else if (b == "lt" and avg > A[i]*(i-ind)) res++; } else if (a == "min") { D(ind); D(i-1); D(queryRMiQ(ind,i-1)); ll min = A[queryRMiQ(ind,i-1)]; D(min); if (b == "gt" and A[i] > min) res++; else if (b == "lt" and A[i] < min) res++; } else { ll man = A[queryRMaQ(ind,i-1)]; if (b == "gt" and A[i] > man) res++; else if (b == "lt" and A[i] < man) res++; } D(res); } cout << res << endl; } return 0; }