제출 #937806

#제출 시각아이디문제언어결과실행 시간메모리
937806danikoynov팀들 (IOI15_teams)C++14
21 / 100
4037 ms18096 KiB
#include "teams.h" #include <bits/stdc++.h> using namespace std; const int maxn = 5e5 + 10; struct segment { int l, r; segment(int _l = 0, int _r = 0) { l = _l; r = _r; } }; int n; segment s[maxn]; void init(int N, int A[], int B[]) { n = N; for (int i = 1; i <= n; i ++) s[i] = segment(A[i - 1], B[i - 1]); } struct event { int x, t, id; event(int _x = 0, int _t = 0, int _id = 0) { x = _x; t = _t; id = _id; } }; bool cmp_event(event e1, event e2) { if (e1.x != e2.x) return e1.x < e2.x; return e1.t < e2.t; } int dp[maxn]; int can(int M, int K[]) { for (int i = 0; i < M; i ++) { dp[i] = 0; } sort(K, K + M); for (int i = 0; i < M; i ++) { for (int j = 1; j <= n; j ++) if (s[j].l <= K[i] && s[j].r >= K[i]) dp[i] ++; dp[i] -= K[i]; for (int j = 0; j < i; j ++) { int cnt = 0; for (int d = 1; d <= n; d ++) { if (s[d].l <= K[j] && s[d].r >= K[j]) continue; if (s[d].l <= K[i] && s[d].r >= K[i]) cnt ++; } dp[i] = min(dp[i], dp[j] + cnt - K[i]); } if (dp[i] < 0) return 0; } return 1; /**vector < event > events; for (int i = 0; i < M; i ++) { events.push_back(event(K[i], 0, -1)); } for (int i = 1; i <= n; i ++) { events.push_back(event(s[i].l, -1, i)); events.push_back(event(s[i].r, 1, i)); } sort(events.begin(), events.end(), cmp_event); set < pair < int, int > > act; for (event cur : events) { if (cur.t == -1) { act.insert({s[cur.id].r, cur.id}); } else if (cur.t == 1) { if (act.find({s[cur.id].r, cur.id}) != act.end()) act.erase({s[cur.id].r, cur.id}); } else { if (act.size() < cur.x) { return 0; } for (int d = 0; d < cur.x; d ++) act.erase(act.begin()); } } return 1;*/ }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...