답안 #945645

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
945645 2024-03-14T05:50:29 Z itslq Fancy Fence (CEOI20_fancyfence) C++17
27 / 100
19 ms 2136 KB
#include <bits/stdc++.h>
using namespace std;
 
#define int long long
 
const int MOD = 1e9 + 7;
const int MOD2 = 2 * MOD;
 
int md(int x) {
    if (x < 0) return (x % MOD) + MOD;
    if (x < MOD) return x;
    return x % MOD;
}
 
int md2(int x) {
    if (x < 0) return (x % MOD2) + MOD2;
    if (x < MOD2) return x;
    return x % MOD2;
}
 
int tri(int x) {
    if (x % 2) return md((x + 1) / 2 * x);
    return md(x / 2 * (x + 1));
}
 
signed main() {
    ios_base::sync_with_stdio(0);
    cin.tie(0);
 
    int N, minH, ans = 0, S = 0;
    bool st3 = 1, st4 = 1, st5 = 1;
    cin >> N;
    vector<int> H(N), W(N);
 
    for (int i = 0; i < N; i++) {
        cin >> H[i];
        if (H[i] > 2) st3 = 0;
        if (H[i] != H[0]) st4 = 0;
        if (i && H[i] < H[i - 1]) st5 = 0;
    }
    for (int i = 0; i < N; i++) {
        cin >> W[i];
        S = md2(S + W[i]);
    }
 
    if (st4) {
        cout << md(tri(S) * tri(H[0]));
        return 0;
    }
 
    if (st3) {
        vector<int> compH{H[0]}, compW{W[0]};
        for (int i = 1; i < N; i++) {
            if (H[i] == compH.back()) compW.back() += W[i];
            else {
                compH.push_back(H[i]);
                compW.push_back(W[i]);
            }
        }
 
        for (int i = 0; i < (signed) compH.size(); i++) {
            if (compH[i] == 2) {
                ans = md(ans + 2 * tri(compW[i]));
            }
        }
 
        cout << md(ans + tri(S));
        return 0;
    }
 
    if (N <= 1000) {
        for (int i = 0; i < N; i++) {
            minH = H[i];
            ans = md(ans + md(H[i] * (H[i] + 1) / 2) * tri(W[i]));
            for (int j = i + 1; j < N; j++) {
                minH = min(minH, H[j]);
                ans = md(ans + md(W[i] * W[j]) * tri(minH));
            }
        }
 
        cout << ans;
    }
}

Compilation message

fancyfence.cpp: In function 'int main()':
fancyfence.cpp:31:28: warning: variable 'st5' set but not used [-Wunused-but-set-variable]
   31 |     bool st3 = 1, st4 = 1, st5 = 1;
      |                            ^~~
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 3 ms 348 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 344 KB Output is correct
2 Incorrect 1 ms 344 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 348 KB Output is correct
2 Correct 2 ms 604 KB Output is correct
3 Correct 10 ms 1252 KB Output is correct
4 Correct 16 ms 1884 KB Output is correct
5 Correct 16 ms 2040 KB Output is correct
6 Correct 1 ms 348 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 2 ms 604 KB Output is correct
4 Correct 8 ms 1368 KB Output is correct
5 Correct 19 ms 2036 KB Output is correct
6 Correct 16 ms 2136 KB Output is correct
7 Correct 4 ms 348 KB Output is correct
8 Incorrect 2 ms 604 KB Output isn't correct
9 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 3 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 0 ms 348 KB Output is correct
8 Incorrect 0 ms 600 KB Output isn't correct
9 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 3 ms 348 KB Output is correct
3 Correct 0 ms 344 KB Output is correct
4 Correct 3 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 0 ms 344 KB Output is correct
7 Correct 0 ms 348 KB Output is correct
8 Correct 0 ms 348 KB Output is correct
9 Correct 0 ms 348 KB Output is correct
10 Incorrect 0 ms 348 KB Output isn't correct
11 Halted 0 ms 0 KB -