#include #include #include #include #include #include #include #include #include #include int main(int argc, char* argv[]) { std::ios_base::sync_with_stdio(false); int nsamples; while ((std::cin >> nsamples).eof() == false) { std::vector > samples(nsamples); for (int i = 0; i < nsamples; ++i) { int Ti, Vi; std::cin >> Ti >> Vi; samples[i].first = Ti; samples[i].second = Vi; } int nconds; std::cin >> nconds; for (int i = 0; i < nconds; ++i) { std::string rel_op, aggr_fun; int length; std::cin >> rel_op >> aggr_fun >> length; int firstIn = 0; int lastIn = 0; int resultCounter = 0; if (rel_op == "gt") { if (aggr_fun == "min") { for (int i = 1; i < samples.size(); i++) { int min = samples[i - 1].second; for (int k = i - 2; k >= 0 && samples[i].first - samples[k].first >= 0; k--) { if (samples[k].second < min) min = samples[k].second; } if (samples[i].second > min) resultCounter++; } if (samples.size() == 0) resultCounter++; } else if (aggr_fun == "max") { for (int i = 1; i < samples.size(); i++) { int max = samples[i - 1].second; for (int k = i - 2; k >= 0 && samples[i].first - samples[k].first >= 0; k--) { if (samples[k].second < max) max = samples[k].second; } if (samples[i].second > max) resultCounter++; } if (samples.size() == 0) resultCounter++; } else // avg { for (int i = 1; i < samples.size(); i++) { int average=0; int samplesAdded=0; for (int k = i - 1; k >= 0 && samples[i].first - samples[k].first >= 0; k--, samplesAdded++) { average += samples[k].second; } double averageNum = double(average) / samplesAdded; if (samples[i].second > averageNum) resultCounter++; } if (samples.size() == 0) resultCounter++; } } else // lt { if (aggr_fun == "min") { for (int i = 1; i < samples.size(); i++) { int min = samples[i - 1].second; for (int k = i - 2; k >= 0 && samples[i].first - samples[k].first >= 0; k--) { if (samples[k].second < min) min = samples[k].second; } if (samples[i].second < min) resultCounter++; } } else if (aggr_fun == "max") { for (int i = 1; i < samples.size(); i++) { int max = samples[i - 1].second; for (int k = i - 2; k >= 0 && samples[i].first - samples[k].first >= 0; k--) { if (samples[k].second < max) max = samples[k].second; } if (samples[i].second < max) resultCounter++; } } else // avg { int average = 0; int samplesAdded = 0; for (int k = i - 1; k >= 0 && samples[i].first - samples[k].first >= 0; k--, samplesAdded++) { average += samples[k].second; } double averageNum = double(average) / samplesAdded; if (samples[i].second < averageNum) resultCounter++; } } printf("%d\n", resultCounter); } } return 0; }