#include #include #include #define CONST_GT 0 #define CONST_LT 1 #define CONST_MIN 0 #define CONST_MAX 1 #define CONST_AVG 2 int main() { int countOfVals; int countOfConds; scanf("%d", &countOfVals); int value[countOfVals]; int time[countOfVals]; for(int i = 0; i < countOfVals; i++){ scanf("%d",&time[i]); scanf("%d",&value[i]); } /*for(int i = 0; i < countOfVals; i++){ printf("%d ",value[i]); printf("%d\n",time[i]); } putchar('\n');*/ scanf("%d", &countOfConds); for(int ii = 0; ii < countOfConds; ii++){ char *RawRj = (char*)malloc(sizeof(char)*3); char *RawFj = (char*)malloc(sizeof(char)*4);; char Rj,Fj; int Lj; scanf("%s %s %d",RawRj, RawFj, &Lj); //printf("%s %s %d\n",RawRj, RawFj, Lj); if(strcmp(RawRj,"gt") == 0){ Rj = 0; }else{ Rj = 1; } if(strcmp(RawFj,"min") == 0){ Fj = 0; }else if(strcmp(RawFj,"max") == 0){ Fj = 1; }else{ Fj = 2; } //printf("%d %d %d\n",Rj, Fj, Lj); int iB = 0, iT = 0, counter = 0; double s = 0; if(time[0] > Lj){ s = 0; } for(int i = 1; i < countOfVals; i++){ int timeTMin = time[i] - Lj; while(!(time[iT] >= timeTMin)){ if(iT < iB){ iT++; }else{ break; } } if(time[iT] >= timeTMin){ if(Fj == CONST_AVG){ s = 0; for(int iterator = iT; iterator <= iB; iterator++){ s = s + value[iterator]; } s = (double)s/(double)(iB-iT+1); }else if(Fj == CONST_MIN){ s = value[iT]; for(int iterator = iT; iterator <= iB; iterator++){ if(value[iterator] < s){ s = value[iterator]; } } }else if(Fj == CONST_MAX){ s = value[iT]; for(int iterator = iT; iterator <= iB; iterator++){ if(value[iterator] > s){ s = value[iterator]; } } } if(Rj == CONST_GT){ if(value[i] > s){ counter++; } }else if(Rj == CONST_LT){ if(value[i] < s){ counter++; } } } //printf("iT:%d | iB:%d | s:%lf \n",iT,iB,s); iB++; } printf("%d\n", counter); } return 0; }