답안 #1094410

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1094410 2024-09-29T15:02:00 Z VMaksimoski008 Relativnost (COCI15_relativnost) C++17
70 / 140
4000 ms 45252 KB
#include <bits/stdc++.h>
using namespace std;
#define int long long

const int mod = 10007;
const int maxn = 1e5 + 5;

int tree[4*maxn][21], n, m;

void update(int u, int tl, int tr, int p, int a, int b) {
    if(tl == tr) {
        tree[u][1] = a;
        tree[u][0] = b;
    } else {
        int tm = (tl + tr) / 2;
        if(p <= tm) update(2*u, tl, tm, p, a, b);
        else update(2*u+1, tm+1, tr, p, a, b);
        for(int i=0; i<=m; i++) tree[u][i] = 0;
        for(int i=0; i<=m; i++)
            for(int j=0; j<=m; j++) tree[u][min(i+j, m)] = (tree[u][min(i+j, m)] + tree[2*u][i] * tree[2*u+1][j] % mod) % mod;
    }
}

signed main() {
    ios_base::sync_with_stdio(false);
    cout.tie(0); cin.tie(0);
    
    cin >> n >> m;
    vector<int> A(n+1), B(n+1);
    for(int i=1; i<=n; i++) cin >> A[i];
    for(int i=1; i<=n; i++) cin >> B[i];
    for(int i=1; i<=n; i++) update(1, 1, n, i, A[i], B[i]);

    int q, p, na, nb; cin >> q;
    while(q--) {
        cin >> p >> na >> nb;
        update(1, 1, n, p, na, nb);
        cout << tree[1][m] % mod << '\n';
    }

    return 0;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 9 ms 600 KB Output is correct
2 Correct 15 ms 604 KB Output is correct
3 Correct 33 ms 812 KB Output is correct
4 Correct 548 ms 23132 KB Output is correct
5 Runtime error 2210 ms 45144 KB Memory limit exceeded
6 Runtime error 3900 ms 45252 KB Memory limit exceeded
7 Correct 1362 ms 23020 KB Output is correct
8 Runtime error 832 ms 44884 KB Memory limit exceeded
9 Runtime error 1136 ms 45120 KB Memory limit exceeded
10 Execution timed out 4045 ms 41700 KB Time limit exceeded