답안 #881261

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
881261 2023-12-01T02:21:33 Z Kubogi 휴가 (IOI14_holiday) C++17
0 / 100
20 ms 11980 KB
#include <bits/stdc++.h>
using namespace std;
 
#define int long long
#define fileio(name) if (fopen(name".inp", "r")) freopen(name".inp", "r", stdin), freopen(name".out", "w", stdout)
 
const int maxn = 1e5+4;
int n, s, t, a[maxn], mp[maxn];
 
struct Node {
    int sum = 0, cnt = 0;
 
    Node operator + (const Node &A) const {
        return {sum + A.sum, cnt + A.cnt};
    }
} st[maxn*4];
 
void update(int id, int l, int r, int i, int v) {
    if (i < l || i > r) return;
    if (l == r) {
        // st[id] = {v, 1};
        return;
    }
 
    int mid = (l+r)>>1;
    update(id*2, l, mid, i, v);
    update(id*2+1, mid+1, r, i, v);
 
    // st[id] = st[id*2] + st[id*2+1];
}
Node get(int id, int l, int r, int a, int b) {
    if (r < a || b < l) return {0, 0};
    if (a <= l && r <= b) return st[id];
 
    int mid = (l+r)>>1;
    return get(id*2, l, mid, a, b) + get(id*2+1, mid+1, r, a, b);
}
 
int walk(int k) {
    int id = 1, l = 0, r = n-1;
    if (st[1].cnt <= k) {
        return st[1].sum;
    }
    while (l < r) {
        int mid = (l+r)>>1;
        if (st[id*2].cnt >= k) {
            id = id*2;
            r = mid;
        } else {
            k -= st[id*2].cnt;
            id = id*2+1;
            l = mid+1;
        }
    }
    return st[id].sum;
}
 
int findMaxAttraction(int32_t _n, int32_t _s, int32_t _t, int32_t _a[]) {
    n = _n; s = _s; t = _t;
    for (int i = 0; i < n; i++) {
        a[i] = _a[i];
    }
 
    if (s == 0) {
        vector<pair<int, int>> V;
        for (int i = 0; i < n; i++) {
            V.push_back({a[i], i});
        }
        sort(V.rbegin(), V.rend());
        for (int i = 0; i < n; i++) {
            mp[V[i].second] = i;
        }
 
        int res = 0;
        for (int i = 0; t-i > 0; i++) {
            // move 1 -> i, get sum of t - i maximum
            update(1, 0, n-1, mp[i], a[i]);
        }
        return res;
    }
    return -1;
}
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 604 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 20 ms 11980 KB Execution killed with signal 11
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 600 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 9 ms 1540 KB Output isn't correct
2 Halted 0 ms 0 KB -