Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- #define pb push_back
- #define mp make_pair
- #define ff first
- #define ss second
- #define debug(args...) //fprintf(stderr, args)
- using namespace std;
- typedef long long lint;
- typedef pair<int, int> pii;
- const int MAXN = 1123;
- vector<pii> s;
- vector< pair<int, pii> > w;
- int up[MAXN], down[MAXN];
- struct eve {
- int si, wi, t;
- bool operator < (const eve& e) const {
- if(this->h() > e.h()) return true;
- else if(this->h() < e.h()) return false;
- else return t < e.t;
- }
- int h() const {
- if(t) return w[wi].ss.ff - s[si].ss;
- else return w[wi].ss.ss - s[si].ss;
- }
- };
- vector<eve> e;
- int main() {
- int n, m;
- scanf("%d%d", &n, &m);
- for(int i = 0; i < n; i++) {
- int x, y;
- scanf("%d%d", &y, &x);
- s.pb({y, x});
- }
- for(int i = 0; i < m; i++) {
- int xi, y, xf;
- scanf("%d%d%d", &y, &xi, &xf);
- w.pb({y, {xi, xf}});
- }
- for(int i = 0; i < n; i++) {
- for(int j = 0; j < m; j++) {
- e.pb((eve){i, j, 0});
- debug("%d, %d, %d -> h = %d\n", i, j, 0, e.back().h());
- e.pb((eve){i, j, 1});
- debug("%d, %d, %d -> h = %d\n", i, j, 1, e.back().h());
- }
- }
- sort(e.begin(), e.end());
- int now = 0, ans = 0;
- for(eve x : e) {
- debug("Estrela %d\nParede %d\nTipo %d\n\n", x.si, x.wi, x.t);
- debug("Estrela %d\nUP %d\nDOWN %d\n\n", x.si, up[x.si], down[x.si]);
- int ok = up[x.si] && down[x.si];
- if(x.t) {
- if(w[x.wi].ff > s[x.si].ff) up[x.si]--;
- else down[x.si]--;
- if(ok && !(up[x.si] && down[x.si])) now--;
- } else {
- if(w[x.wi].ff > s[x.si].ff) up[x.si]++;
- else down[x.si]++;
- if(!ok && (up[x.si] && down[x.si])) now++;
- }
- debug("Estrela %d\nUP %d\nDOWN %d\n\n", x.si, up[x.si], down[x.si]);
- debug("AGORA %d\n\n\n", now);
- ans = max(ans, now);
- }
- printf("%d\n", ans);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement