Thứ Ba, 3 tháng 5, 2022

WATER C++

#include <bits/stdc++.h>
using namespace std;

int n;
long long a[100005],b[100005],trai[100005],phai[100005];
void nhap()
{
    cin>>n;
    for(int i=1;i<=n;i++)
        cin>>a[i];
}
void giai()
{
    //trai[i] = max(a[1],a[2],...,a[i])
    trai[1]=a[1];
    for (int i=2;i<=n;i++)
    {
        if (a[i]>trai[i-1]) trai[i]=a[i];
        else trai[i]=trai[i-1];
        //cout<<trai[i]<<endl;
    }
    //phai[i] = max(a[i],a[i+1],...,a[n]);
    phai[n]=a[n];
    for (int i=n-1;i>=1;i--)
    {
        if (a[i]>phai[i+1]) phai[i]=a[i];
        else phai[i]=phai[i+1];
        //cout<<phai[i]<<endl;
    }
    //tinh b[i]= so nuoc dong tren cot i
    for(int i=2;i<=n-1;i++)
    {
        if(min(trai[i-1],phai[i+1])>a[i])
            b[i]=min(trai[i-1],phai[i+1])-a[i];
        else
            b[i]=0;
       // cout<<trai[i-1]<<" "<<b[i]<<" "<<phai[i+1]<<endl;
    }
    //cot 1 va cot n chac chan khong co nuoc don

    long long t=0;
    for (int i=2;i<=n-1;i++)
        t=t+b[i];
    cout<<t;
}



int main()
{
    freopen("water.inp","r",stdin);
    freopen("water.out","w",stdout);
    nhap();
    giai();
}

Không có nhận xét nào:

Đăng nhận xét

Lưu ý: Chỉ thành viên của blog này mới được đăng nhận xét.