Submission #874230

# Submission time Handle Problem Language Result Execution time Memory
874230 2023-11-16T13:18:50 Z Matjaz Jousting tournament (IOI12_tournament) C++14
49 / 100
1000 ms 2136 KB
#include <vector>
#include <algorithm>
#include <iostream>

using namespace std;


// Insight: each S[i] E[i] corresponds to some interval in the original set of positions
// The interval only matters if your player is in it - and there is a unique answer as to whether it wins or loses
// You can find the best position with a sweep.


int GetBestPosition(int N, int C, int R, int *K, int *S, int *E) {
    
    int best_position = 0;
    int best_wins = 0;
    
    vector<pair<int,int> > positions(N);
    vector<pair<int,int> > intervals(C);
    for (int i=0;i<N;i++) positions[i] = make_pair(i,i);
    for (int i=0;i<C;i++){
        intervals[i] = make_pair(positions[S[i]].first, positions[E[i]].second);
        positions[S[i]] = intervals[i];
        for (int j=E[i]+1;j<N;j++) positions[S[i] + j - E[i]] = positions[j];
    }
    
    vector<int> s(N+1);
    s[0] = 0;
    for (int i=1;i<=N;i++) s[i] = s[i-1] + (K[i-1] > R);
    
    
    for (int p=0;p<N;p++){
        int wins = 0;
        
        for (int i=0;i<C;i++){
            if (intervals[i].first <= p && p <= intervals[i].second){
                if (s[intervals[i].second] - s[intervals[i].first] == 0) wins++;
            }
        }
        
        if (wins > best_wins){
            best_wins = wins;
            best_position = p;
        }
    }
    
    
    return best_position;
}
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 1 ms 348 KB Output is correct
4 Correct 1 ms 348 KB Output is correct
5 Correct 1 ms 348 KB Output is correct
6 Correct 1 ms 348 KB Output is correct
7 Correct 1 ms 348 KB Output is correct
8 Correct 1 ms 348 KB Output is correct
9 Correct 0 ms 436 KB Output is correct
10 Correct 1 ms 500 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 344 KB Output is correct
2 Correct 44 ms 452 KB Output is correct
3 Correct 3 ms 344 KB Output is correct
4 Correct 41 ms 628 KB Output is correct
5 Correct 37 ms 604 KB Output is correct
6 Correct 32 ms 604 KB Output is correct
7 Correct 41 ms 600 KB Output is correct
8 Correct 49 ms 604 KB Output is correct
9 Correct 1 ms 344 KB Output is correct
10 Correct 59 ms 632 KB Output is correct
# Verdict Execution time Memory Grader output
1 Execution timed out 1042 ms 2136 KB Time limit exceeded
2 Halted 0 ms 0 KB -