90pts 求调 (P1318) 玄关
查看原帖
90pts 求调 (P1318) 玄关
1030559
tzzl3035楼主2024/10/22 23:19

rt

#include <bits/stdc++.h>
int main() 
{
  std::ios::sync_with_stdio(0);
  std::cin.tie(nullptr);

  int n; std::cin >> n;
  int a[10003] = {0};
  for(int i = 1; i <= n; ++i) 
    std::cin >> a[i];
  int b[10003] = {0};
  for(int i = n; i >= 1; --i) 
    b[i] = std::max(b[i+1], a[i]);
  int ans = 0, mx = 0;
  for(int i = 1; i < n; ++i) 
  {
    mx = std::max(mx, a[i]);
    if(mx != a[i]) 
      continue;
    int tmp = 0, flg = 0;
    for(int j = i+1; j <= n; ++j) 
    {
      if(b[i+1] == a[j] || a[i] <= a[j]) 
      {
        flg = 1;
        tmp = std::min(a[i], a[j]) * (j-i-1) - tmp;
        break;
      }
      tmp += a[j];
    }
    ans += flg * tmp;
  }
  std::cout << ans;

  return 0;
}

2024/10/22 23:19
加载中...