Submission #547662

# Submission time Handle Problem Language Result Execution time Memory
547662 2022-04-11T08:49:44 Z tengiz05 The Potion of Great Power (CEOI20_potion) C++17
38 / 100
3000 ms 262144 KB
#include <bits/stdc++.h>
#ifndef EVAL
#include "grader.cpp"
#endif

using namespace std;

/*


6 5 11 4
2 42 1000 54 68 234
0 1
2 0
3 4
3 5
3 5
1 3
5 3
0 5
3 0
1 3
3 5
0 3 4 26
3 0 8 0
0 5 5 1000000000
3 0 11 14


*/

namespace sOlUTiON {
    constexpr int N = 1E5, M = 2E5;
    int n, D;
    int h[N];
    vector<int> f[N];
    vector<vector<int>> a[N];
};
using namespace sOlUTiON;

void init(int _N, int _D, int H[]) {
    n = _N;
    D = _D;
    for (int i = 0; i < n; i++) {
        a[i].push_back({});
        f[i].push_back(0);
        h[i] = H[i];
    }
}

void curseChanges(int U, int A[], int B[]) {
    for (int i = 0; i < U; i++) {
        int u = A[i];
        int v = B[i];
        
        {
            vector<int> &b = a[u].back(), w;
            int j = 0;
            while (j < int(b.size()) && (b[j] != v && h[b[j]] <= h[v]))
                w.push_back(b[j++]);
            
            if (j < int(b.size()) && b[j] == v) {
                j++;
            } else {
                w.push_back(v);
            }
            
            while (j < int(b.size()))
                w.push_back(b[j++]);
            
            a[u].push_back(w);
        }
        {
            vector<int> &b = a[v].back(), w;
            int j = 0;
            while (j < int(b.size()) && (b[j] != u && h[b[j]] <= h[u]))
                w.push_back(b[j++]);
            
            if (j < int(b.size()) && b[j] == u) {
                j++;
            } else {
                w.push_back(u);
            }
            
            while (j < int(b.size()))
                w.push_back(b[j++]);
            
            a[v].push_back(w);
        }
        
        f[u].push_back(i + 1);
        f[v].push_back(i + 1);
    }
}

int question(int x, int y, int v) {
    int p1 = upper_bound(f[x].begin(), f[x].end(), v) - f[x].begin() - 1;
    int p2 = upper_bound(f[y].begin(), f[y].end(), v) - f[y].begin() - 1;
    
    int ans = 1E9;
    
    for (int i = 0; i < int(a[x][p1].size()); i++) {
        for (int j = 0; j < int(a[y][p2].size()); j++) {
            ans = min(ans, abs(h[a[x][p1][i]] - h[a[y][p2][j]]));
        }
    }
    
    return ans;
}
# Verdict Execution time Memory Grader output
1 Correct 3 ms 4944 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 4 ms 5200 KB Output is correct
2 Correct 4 ms 5200 KB Output is correct
3 Correct 3 ms 5200 KB Output is correct
4 Correct 25 ms 12180 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 432 ms 41444 KB Output is correct
2 Correct 418 ms 41272 KB Output is correct
3 Correct 264 ms 45456 KB Output is correct
4 Execution timed out 3097 ms 223880 KB Time limit exceeded
5 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 436 ms 41348 KB Output is correct
2 Runtime error 478 ms 262144 KB Execution killed with signal 9
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 33 ms 7120 KB Output is correct
2 Correct 47 ms 7504 KB Output is correct
3 Correct 64 ms 7536 KB Output is correct
4 Correct 1353 ms 11984 KB Output is correct
5 Correct 1455 ms 10832 KB Output is correct
6 Correct 53 ms 6992 KB Output is correct
7 Correct 787 ms 11248 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 3 ms 4944 KB Output is correct
2 Correct 4 ms 5200 KB Output is correct
3 Correct 4 ms 5200 KB Output is correct
4 Correct 3 ms 5200 KB Output is correct
5 Correct 25 ms 12180 KB Output is correct
6 Correct 432 ms 41444 KB Output is correct
7 Correct 418 ms 41272 KB Output is correct
8 Correct 264 ms 45456 KB Output is correct
9 Execution timed out 3097 ms 223880 KB Time limit exceeded
10 Halted 0 ms 0 KB -