#include <cstdio> #include <iostream> #include <cstring> #include <set> #include <cmath> #include <algorithm> #include <vector> #include <map> using namespace std; int n; int a[100015]; int b[100015]; int fun(int m){ for(int i = 0;i < n;i++){ if(i == 0){ b[i] = a[i]-m; } else{ if(a[i]+m < b[i-1]+1){ return 0; } else{ if(a[i]-m < b[i-1]+1){ b[i] = b[i-1] + 1; } else { b[i] = a[i] - m; } } } } return 1; } int main(){ int t; cin >> t; for(int kcase = 1; kcase <= t;kcase ++){ scanf("%d",&n); int maxn = 0; for(int i = 0;i < n;i++){ scanf("%d",&a[i]); if(a[i] > maxn){ maxn = a[i]; } } int l = 0; int r = 1000000+1; memset(b,0,sizeof(b)); while(l < r){ int m = l + (r-l)/2; if(fun(m)){ r = m; } else{ l = m + 1; } } printf("Case #%d:\n",kcase); printf("%d\n",l); } return 0; }
时间: 2024-10-13 01:43:19