Meteor Seoul 2007

来源:互联网 发布:亿赞普大数据 编辑:程序博客网 时间:2024/05/17 18:40


#include <iostream>#include <cstdio>#include <cstdlib>#include <cmath>#include <queue>#include <algorithm>#include <vector>#include <cstring>#include <stack>#include <cctype>#include <utility>#include <map>#include <string>#include <climits> #include <set>#include <string> #include <sstream>#include <utility>#include <ctime>//#pragma comment(linker, "/STACK:1024000000,1024000000") using std::priority_queue;using std::vector;using std::swap;using std::stack;using std::sort;using std::max;using std::min;using std::pair;using std::map;using std::string;using std::cin;using std::cout;using std::set;using std::queue;using std::string;using std::istringstream;using std::getline;using std::make_pair;using std::greater; const int MAXN(100010);struct NODE{double ti;int flag;friend bool operator < (const NODE &op1, const NODE &op2){return op1.ti < op2.ti || (op1.ti == op2.ti && op1.flag < op2.flag); }};NODE node[MAXN << 1];int count;double t[4];bool comp(int op1, int op2){return t[op1] < t[op2];}void updata(int di, int v, int w, double &L, double &R){if(v == 0){if(di <= 0 || di >= w)R = L-1;}elseif(v < 0){L = max(L, -(double)(di-w)/v);R = min(R, -(double)di/v);}else{L = max(L, (double)(-di)/v);R = min(R, (double)(w-di)/v);}}int main(){int T;scanf("%d", &T);while(T--){int w, h;int n;scanf("%d%d%d", &w, &h, &n);count = 0;int x, y, vx, vy;for(int i  = 0; i < n; ++i){scanf("%d%d%d%d", &x, &y, &vx, &vy);double L = 0, R = 1e20;updata(x, vx, w, L, R);updata(y, vy, h, L, R);if(L < R){node[count].ti = L;node[count++].flag = 1;node[count].ti = R;node[count++].flag = -1;}}sort(node, node+count);int ans = 0, sum = 0;for(int i = 0; i < count; ++i){sum += node[i].flag;ans = max(ans, sum);}printf("%d\n", ans);}return 0;}




原创粉丝点击