답안 #825004

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
825004 2023-08-14T13:10:45 Z PixelCat 송신탑 (IOI22_towers) C++17
4 / 100
656 ms 1872 KB
#include "towers.h"

#ifdef NYAOWO
#include "stub.cpp"
#endif

#include <bits/stdc++.h>
#define For(i, a, b) for(int i = a; i <= b; i++)
#define Forr(i, a, b) for(int i = a; i >= b; i--)
#define F first
#define S second 
#define all(x) x.begin(), x.end()
#define sz(x) ((int)x.size())
#define eb emplace_back
// #define int LL
using namespace std;
using i32 = int32_t;
using LL = long long;
using pii = pair<int, int>;

inline void chmax(int &x, int val) { x = max(x, val); }

const int MAXN = 100'000;

// #define L(id) ((id) * 2 + 1)
// #define R(id) ((id) * 2 + 2)
// struct SegTree {
//     int mx[MAXN * 4 + 10];
//     void build() {
//         memset(mx, 0, sizeof(mx));
//     }
//     void upd(int id, int l, int r, int pos, int val) {
//         if(l == r) {
//             chmax(mx[id], val);
//             return;
//         }
//         int m = (l + r) / 2;
//         if(pos <= m) upd(L(id), l, m, pos, val);
//         else         upd(R(id), m + 1, r, pos, val);
//         mx[id] = max(mx[L(id)], mx[R(id)]);
//     }
//     int range_max(int id, int l, int r, int L, int R) {
//         if(L > R) return 0;
//         if(l >= L && r <= R) {
//             return mx[id];
//         }
//         int m = (l + r) / 2;
//         int res = 0;
//         if(L <= m) chmax(res, range_max(L(id), l, m, L, R));
//         if(R > m)  chmax(res, range_max(R(id), m + 1, r, L, R));
//         return res;
//     }
// } dp1, dp2;

int n;
int h[MAXN + 10];
int vals[MAXN + 10];
int mx, mxi;

void init(int N, std::vector<int> H) {
    n = N;
    For(i, 0, n - 1) {
        h[i] = H[i];
        vals[i] = h[i];
    }
    sort(vals, vals + n);
    mx = 0; mxi = -1;
    For(i, 0, n - 1) if(h[i] > mx) {
        mx = h[i];
        mxi = i;
    }
}

int max_towers(int L, int R, int D) {
    if(R <= mxi || L >= mxi) return 1;
    if(h[L] <= mx - D && h[R] <= mx - D) return 2;
    return 1;
    // int ans = 0;
    // dp1.build();
    // dp2.build();
    // For(i, L, R) {
    //     int p = (int)(lower_bound(vals, vals + n, h[i]) - vals);
    //     int l = (int)(upper_bound(vals, vals + n, h[i] - D) - vals) - 1;
    //     int r = (int)(lower_bound(vals, vals + n, h[i] + D) - vals);
    //     int v1 = dp2.range_max(0, 0, n - 1, r, n - 1) + 1;
    //     int v2 = dp1.range_max(0, 0, n - 1, 0, l);
    //     dp1.upd(0, 0, n - 1, p, v1);
    //     dp2.upd(0, 0, n - 1, p, v2);
    //     chmax(ans, v1);
    // }
    // return ans;
}

/*

7 3
10 20 60 40 50 30 70
1 5 10
2 2 100
0 6 17

3
1
2

*/
# 결과 실행 시간 메모리 Grader output
1 Correct 315 ms 1232 KB Output is correct
2 Correct 656 ms 1872 KB Output is correct
3 Correct 636 ms 1860 KB Output is correct
4 Correct 605 ms 1836 KB Output is correct
5 Correct 521 ms 1856 KB Output is correct
6 Correct 484 ms 1872 KB Output is correct
7 Correct 584 ms 1812 KB Output is correct
8 Correct 0 ms 208 KB Output is correct
9 Correct 1 ms 336 KB Output is correct
10 Correct 0 ms 336 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 208 KB 1st lines differ - on the 1st token, expected: '13', found: '1'
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 208 KB 1st lines differ - on the 1st token, expected: '13', found: '1'
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 402 ms 1852 KB 1st lines differ - on the 1st token, expected: '11903', found: '2'
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 157 ms 592 KB 1st lines differ - on the 1st token, expected: '7197', found: '2'
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 208 KB 1st lines differ - on the 1st token, expected: '13', found: '1'
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 315 ms 1232 KB Output is correct
2 Correct 656 ms 1872 KB Output is correct
3 Correct 636 ms 1860 KB Output is correct
4 Correct 605 ms 1836 KB Output is correct
5 Correct 521 ms 1856 KB Output is correct
6 Correct 484 ms 1872 KB Output is correct
7 Correct 584 ms 1812 KB Output is correct
8 Correct 0 ms 208 KB Output is correct
9 Correct 1 ms 336 KB Output is correct
10 Correct 0 ms 336 KB Output is correct
11 Incorrect 1 ms 208 KB 1st lines differ - on the 1st token, expected: '13', found: '1'
12 Halted 0 ms 0 KB -