답안 #906566

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
906566 2024-01-14T13:04:17 Z Ludissey Fancy Fence (CEOI20_fancyfence) C++14
43 / 100
25 ms 4956 KB
#include <bits/stdc++.h>
using namespace std;
#define int long long
 
int n,m;
int mod=1e9+7;
int MOD(int x) {
    return (x+mod)%mod;
}
int clc(int x, int y) {
    x=MOD(x);
    y=MOD(y); 
    return (((((x*(x+1)))/(long long)2)%mod)*((((y*(y+1)))/(long long)2)%mod))%mod; //non cest bon 
}
signed main() {
    ios::sync_with_stdio(false); cin.tie(nullptr);
    cin >> n;
    vector<int> h(n+1);
    vector<int> w(n+1);
    int totalw=0;
    for (int i = 1; i <= n; i++) cin>>h[i];
    for (int i = 1; i <= n; i++) cin >> w[i];
    h[0]=0;
    stack<pair<int,int>> stck;
    int outp=0;
    stck.push({h[1],w[1]});
    for (int i = 2; i <= n; i++)
    {
        int hght=stck.top().first;
        int wdht=stck.top().second;
        stck.pop();
        if(hght==h[i]) {
            wdht+=w[i];
            stck.push({hght, wdht});
        }
        else if(hght<h[i]){
            stck.push({hght, wdht});
            stck.push({h[i], w[i]});
        }else{
            bool b=true;
            while(hght>h[i]){
                outp=MOD(outp+MOD(clc(hght,wdht)-clc(h[i],wdht)));
                w[i]+=wdht;
                if(!b) stck.pop();
                if(stck.empty()) break;
                b=false;
                hght=stck.top().first;
                wdht=stck.top().second;
            }
            stck.push({h[i], w[i]});
        }
    }
    h.clear();
    w.clear();
    int newN=stck.size();
    h.resize(newN);
    w.resize(newN);
    totalw=0;
    for (int i = newN; i > 0; i--)
    {
        h[i]=stck.top().first;
        w[i]=stck.top().second;
        totalw=(totalw+w[i])%mod;
        stck.pop();
    }
    h[0]=0;
    for (int i = 1; i <= newN; i++)
    {
        int side1=clc(totalw,h[i])-clc(totalw,h[i-1]);
        side1=MOD(side1); // 
        outp=MOD(outp+side1); //jai pas compris
        totalw-=w[i];
    }
    cout << outp << "\n";
    return 0;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 348 KB Output is correct
2 Incorrect 1 ms 344 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 344 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 1 ms 348 KB Output is correct
3 Correct 8 ms 1940 KB Output is correct
4 Correct 16 ms 2908 KB Output is correct
5 Correct 18 ms 3180 KB Output is correct
6 Correct 15 ms 2908 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 344 KB Output is correct
2 Correct 2 ms 604 KB Output is correct
3 Correct 9 ms 1884 KB Output is correct
4 Correct 21 ms 3132 KB Output is correct
5 Correct 18 ms 3156 KB Output is correct
6 Correct 0 ms 600 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 1 ms 344 KB Output is correct
3 Correct 2 ms 604 KB Output is correct
4 Correct 9 ms 1116 KB Output is correct
5 Correct 16 ms 1884 KB Output is correct
6 Correct 21 ms 2040 KB Output is correct
7 Correct 1 ms 344 KB Output is correct
8 Correct 4 ms 1116 KB Output is correct
9 Correct 11 ms 2140 KB Output is correct
10 Correct 25 ms 4956 KB Output is correct
11 Correct 25 ms 4852 KB Output is correct
12 Correct 1 ms 344 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 348 KB Output is correct
2 Incorrect 1 ms 348 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 348 KB Output is correct
2 Incorrect 1 ms 344 KB Output isn't correct
3 Halted 0 ms 0 KB -