红题求调。
查看原帖
红题求调。
1296826
lcfollower楼主2024/7/21 21:33

rt,样例输出 8888,我彻底被一道红题切了怎么办?

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

#define int long long
#define inf 0x3f3f3f3f
#define infi 0x3f3f3f3f3f3f3f3fll
#define _Dark_Star exit(0)
#define up(i,x,y) for(register int i=x;i<=y;++i)
#define dn(i,x,y) for(register int i=x;i>=y;--i)
#define max(a,b) a > b ? a : b

using namespace std;

inline int read(){int x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9')x=(x<<1)+(x<<3)+(ch^48),ch=getchar();return x*f;}
inline void write(int x){if(x<0)putchar('-'),x=-x;if(x>9)write(x/10);putchar(x%10|48);}
inline void writeln(int x){write(x),putchar('\n');}
inline void writesp(int x){write(x),putchar(' ');}
const int N = 5e5 + 10;
int n ,a[N];
inline int M(int l ,int r){
  //if(l > r) return 0;
  if(abs(r - l) > 5){
    int mid = ((l + r) >> 1);
    return (M(l ,mid) % max(7ll ,M(mid + 1 ,r))) + (a[mid] - 1);
  } else{
    int ans = 0;
    up(i,l,r) ans = max(ans, a[i]);
    return ans;
  }
} signed main(){
  n = read();
  up(i,1,n) a[i] = read();
  writeln(M(1 ,n)); 
  return 0;
}
2024/7/21 21:33
加载中...