Submission #879757

# Submission time Handle Problem Language Result Execution time Memory
879757 2023-11-28T04:16:52 Z NeroZein Jousting tournament (IOI12_tournament) C++17
17 / 100
1000 ms 856 KB
#include "bits/stdc++.h"
using namespace std; 

const int M = 5005;

int tree[M];

inline void upd(int i, int v) {
  i++; 
  while (i < M) {
    tree[i] += v;
    i += i & -i;
  }
}

inline int get(int v) {
  int pos = 0, sum = 0; 
  for (int i = 12; i >= 0; --i) {
    if (pos + (1 << i) < M && sum + tree[pos + (1 << i)] < v) {
      pos += 1 << i;
      sum += tree[pos];
    }
  }
  return pos;
}

int GetBestPosition(int N, int C, int R, int *K, int *S, int *E) {
  int ret = 0, best = 0; 
  for (int i = 0; i < N; ++i) {
    for (int j = 0; j < N; ++j) {
      upd(j, 1); 
    }
    int tmp = 0; 
    for (int j = 0; j < C; ++j) {
      vector<int> ppl; 
      for (int k = 0; k < E[j] - S[j] + 1; ++k) {
        int f = get(S[j] + 1 + k); 
        ppl.push_back(f); 
      }
      int mx = 0; 
      for (int k : ppl) {
        mx = max(mx, (k == i ? R : (k < i ? K[k] : K[k - 1])));
      }
      for (int k : ppl) {
        int val = (k == i ? R : (k < i ? K[k] : K[k - 1])); 
        if (val != mx) {
          upd(k, -1); 
        } else if (k == i) {
          tmp++;
        }
      }
    }
    int x = get(1);
    upd(x, -1); 
    if (tmp > best) {
      best = tmp;
      ret = i; 
    }
  }
  return ret;
}
# Verdict Execution time Memory Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 2 ms 348 KB Output is correct
3 Correct 34 ms 348 KB Output is correct
4 Correct 33 ms 348 KB Output is correct
5 Correct 14 ms 348 KB Output is correct
6 Correct 35 ms 348 KB Output is correct
7 Correct 35 ms 348 KB Output is correct
8 Correct 37 ms 348 KB Output is correct
9 Correct 13 ms 344 KB Output is correct
10 Correct 18 ms 348 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 111 ms 348 KB Output is correct
2 Execution timed out 1026 ms 344 KB Time limit exceeded
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 1094 ms 856 KB Time limit exceeded
2 Halted 0 ms 0 KB -