제출 #41708

#제출 시각아이디문제언어결과실행 시간메모리
41708funcsr팀들 (IOI15_teams)C++14
34 / 100
4082 ms99668 KiB
#include "teams.h" #include <vector> #include <algorithm> #include <string> #include <queue> using namespace std; #define rep(i, n) for (int i=0; i<(n); i++) #define all(x) x.begin(), x.end() #define uniq(x) x.erase(unique(all(x)), x.end()) #define index(x, y) (int)(lower_bound(all(x), y) - x.begin()) #define pb push_back #define _1 first #define _2 second typedef pair<int, int> P; int N; int A[500000], B[500000]; vector<int> Gstart[500001], Gend[500001]; void init(int NN, int AA[], int BB[]) { N = NN; vector<P> ps; rep(i, N) ps.pb(P(BB[i], i)); sort(all(ps)); rep(i, N) A[i] = AA[ps[i]._2], B[i] = BB[ps[i]._2]; rep(i, N) Gstart[A[i]].pb(i); rep(i, N) Gend[B[i]].pb(i); } int T[500001]; bool alive[500000]; int can(int M, int K[]) { rep(i, N) alive[i] = false; rep(i, N+1) T[i] = 0; rep(i, M) T[K[i]]++; priority_queue<int, vector<int>, greater<int> > q; rep(x, N+1) { for (int i : Gstart[x]) { alive[i] = true; q.push(i); } rep(times, T[x]) { rep(_, x) { while (!q.empty() && !alive[q.top()]) q.pop(); if (q.empty()) return 0; alive[q.top()] = false; q.pop(); } } for (int i : Gend[x]) alive[i] = false; } 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...