Submission #424891

#TimeUsernameProblemLanguageResultExecution timeMemory
424891ollelTeams (IOI15_teams)C++14
34 / 100
4082 ms13036 KiB
#include <bits/stdc++.h>
#include <iostream>
#include "teams.h"
using namespace std;

#define rep(i,a,b) for(int i = a; i < b; i++)
#define pb push_back
#define lso(x) x&(-x)

typedef long long ll;
typedef vector<int> vi;
typedef vector<vi> vvi;

struct seg {
  int a, b;
  bool marked = false;
};
vector<seg> s;

int n;

void init(int N, int a[], int b[]) {
  n = N;
  s.resize(n);
  rep(i,0,n) {
    s[i].a = a[i];
    s[i].b = b[i];
  }
  sort(s.begin(), s.end(), [](seg x, seg y) {
    return x.b < y.b;
  });
}

int can(int m, int k[]) {
  vi p(m);
  rep(i,0,m) p[i] = k[i];
  sort(p.begin(), p.end());
  rep(i,0,n) s[i].marked = false;

  rep(i,0,m) {
    int t = p[i], left = p[i];
    rep(j, 0, n) {
      if((!s[j].marked) && s[j].a <= t && s[j].b >= t) {
        left--;
        s[j].marked = true;
        if (left == 0) break;
      }
    }
    if (left > 0) return 0;
  }

  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...