Submission #242221

# Submission time Handle Problem Language Result Execution time Memory
242221 2020-06-27T06:42:31 Z dantoh000 Jousting tournament (IOI12_tournament) C++14
17 / 100
62 ms 1536 KB
#include <bits/stdc++.h>
using namespace std;

int l[5005], r[5005], RR[5005];
int in[5005];
int id[5005];
int p[5005];
int sc[5005];
int leftpos[5005];
int GetBestPosition(int N, int C, int R, int *K, int *S, int *E) {
    for (int i = 0; i < N; i++) {
        in[i] = 1;
    }
    for (int i = 0; i < N-1; i++) K[i] = K[i] > R ? 1:0;
    fill(l,l+5000,-1);
    fill(r,r+5000,-1);
    fill(id,id+5000,-1);
    fill(p,p+5000,-1);
    iota(RR,RR+5000,0);
    for (int i = 0; i < C; i++){
        int cur = 0;
        for (int j = 0; j < N; j++){
            cur += in[j];
            if (cur == S[i]+1 && l[i] == -1) l[i] = j;
            if (cur == E[i]+1 && r[i] == -1) r[i] = RR[j];
        }
        for (int j = l[i]+1; j <= r[i]; j++){
            in[j] = 0;
            if (id[j] == -1) id[j] = i;
            else if (p[id[j]] == -1){
                p[id[j]] = i;
            }
        }
        RR[l[i]] = r[i];
        if (id[l[i]] == -1) id[l[i]] = i;
        else if (p[id[l[i]]] == -1){
            p[id[l[i]]] = i;
        }
    }
    for (int i = C-1; i >= 0; i--){
        //printf("%d %d\n",l[i],r[i]);
        int mx = 0;
        int LEFT = -1;
        for (int j = l[i]; j < r[i]; j++){
            mx |= K[j];
            if (id[j] == i && LEFT == -1) LEFT = j;
        }
        if (mx){
            sc[i] = 0;
        }
        else{
            if (p[i] == -1) sc[i] = 1;
            else sc[i] = sc[p[i]] + 1;
        }
        leftpos[i] = LEFT;
    }
    int bestsc = 0;
    int ans = N-1;
    for (int i = 0; i < C; i++){
        if (bestsc < sc[i]){
            bestsc = sc[i];
            ans = leftpos[i];
        }
        else if (bestsc == sc[i]){
            ans = min(ans,leftpos[i]);
        }
    }
  return ans;

}
# Verdict Execution time Memory Grader output
1 Correct 5 ms 384 KB Output is correct
2 Correct 5 ms 384 KB Output is correct
3 Correct 5 ms 384 KB Output is correct
4 Correct 5 ms 384 KB Output is correct
5 Correct 5 ms 384 KB Output is correct
6 Correct 5 ms 384 KB Output is correct
7 Correct 5 ms 384 KB Output is correct
8 Correct 5 ms 384 KB Output is correct
9 Correct 5 ms 256 KB Output is correct
10 Correct 5 ms 384 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 6 ms 512 KB Output is correct
2 Correct 62 ms 632 KB Output is correct
3 Correct 7 ms 512 KB Output is correct
4 Correct 40 ms 512 KB Output is correct
5 Correct 44 ms 512 KB Output is correct
6 Incorrect 25 ms 512 KB Output isn't correct
7 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 21 ms 1536 KB Execution killed with signal 11 (could be triggered by violating memory limits)
2 Halted 0 ms 0 KB -