/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; /** * * @author kontris */ public class Samples { /** * @param args the command line arguments */ private static int samples; private static long[][] arr = new long[100005][2]; public static void main(String[] args) throws IOException { // TODO code application logic here BufferedReader input = new BufferedReader(new InputStreamReader(System.in)); String line; String[] poleS; while ((line = input.readLine()) != null) { line = line.trim(); samples = Integer.parseInt(line); for (int i = 0; i < samples; i++) { poleS = input.readLine().trim().split(" "); arr[i][0] = Long.parseLong(poleS[0]); arr[i][1] = Long.parseLong(poleS[1]); } int cmds = Integer.parseInt(input.readLine().trim()); for (int i = 0; i < cmds; i++) { int res = spracCmd(input.readLine().trim().split(" ")); System.out.println(res); } } } private static int spracCmd(String[] split) { int fcia = 0; switch (split[1]) { case "min": fcia = 0; break; case "max": fcia = 1; break; case "avg": fcia = 2; break; } boolean isMin = split[0].equals("lt"); long time = Long.parseLong(split[2]); long currTime = arr[1][0]; int last = 0; long sum = arr[0][1]; long min = arr[0][1]; long max = arr[0][1]; //mch >= if(currTime - arr[0][0] > time){ last = -1; sum = 0; min = 0; max = 0; } int result = 0; int pocPrvkov; long sucVal; for (int i = 1; i < samples; i++) { // System.out.println("-- "+fcia+" "+isMin); sucVal = arr[i][1]; if(last != -1){ //eval fciu pocPrvkov = i-last; //min if(fcia == 0){ // System.out.println(i+" "+last+" "+currTime+" ---- "); //lt if(isMin){ if(sucVal < min){ result++; } }else{ //gt if(sucVal > min){ result++; } } } //max if(fcia == 1){ //lt if(isMin){ if(sucVal < max){ result++; } }else{ //gt if(sucVal > max){ result++; } } } //avg double avg = sum*1.0/pocPrvkov; if(fcia == 2){ //lt if(isMin){ if(sucVal < avg){ result++; } }else{ //gt if(sucVal > avg){ result++; } } } } //posun currTime = arr[i+1][0]; if(last == -1){ if(currTime - arr[i][0] <= time ){ sum=arr[i][1]; last = i; max = arr[i][1]; min = arr[i][1]; } }else{ sum+=arr[i][1]; for (int j = last; j < i+1; j++) { if(currTime - arr[last][0] > time ){ last++; sum-=arr[last][1]; }else{ break; } } if(last == i+1){ last = -1; min = 0; max = 0; sum = 0; } if(last != -1){ min = arr[last][1]; max = arr[last][1]; for (int j = last; j < i+1; j++) { if(arr[j][1] > max)max = arr[j][1]; if(arr[j][1] < min)min = arr[j][1]; } } } } return result; } }