#include #include #include #include #include #include #include #include #include #include #include #include #define FOR(i,a,b) for(int i=(a);i<(b);i++) #define FFOR(i,a,b) for(int i=(a);i<=(b);i++) #define REP(i,b) FOR(i,0,b) #define RREP(i,b) FFOR(i,1,b) #define PB push_back #define F first #define S second #define BE(c) c.begin(),c.end() using namespace std; typedef long long LL; typedef LL ut; typedef long double ld; typedef pair pr; typedef vector Vpr; typedef vector VI; typedef pair ppr; typedef priority_queue > PQ; const int SIZE=1e+5 + 1; const ut INF=1<<29; const ld eps=1e-6; const LL mod=1e+6 + 3; int N, A[256], blocks[256]; int sum; int main() { cin >> N; REP(i,N){ cin >> A[i]; sum += A[i]; } int L = (int)floor(sqrt(sum)); L = (L - 1) * 2 + 1; int ans = sum - (int)pow((L + 1) / 2, 2); if(N < L) N = L; for(int i = 0; i < L; ++i){ if(i <= L / 2){ int t = (i + 1) - A[i]; if(t > 0) ans += t; } else if(i > L / 2){ int t = (L - i) - A[i]; if(t > 0) ans += t; } } cout << ans << endl; /*if(L >= N){ for(int i = 0, k = 0; i < L; ++i){ if(i >= L / 2 - N / 2 && A[k]){ blocks[i] = A[k]; k++; } } REP(i,L) A[i] = blocks[i]; N = L; REP(i,N){ if(i <= N / 2){ int t = A[i] - (i + 1); if(t > 0){ ans += t; } } else{ int t = A[i] - (N - i); if(t > 0){ ans += t; } } } } else if(L < N){ ans += ; int d = (N - L) / 2; for(int i = 0; i < N; ++i){ if(i >= d && i <= N / 2){ int t = (i - d + 1) - A[i]; if(t > 0) ans += t; } else if(i > N / 2 && i < N - d){ int t = (N - d - i) - A[i]; if(t > 0) ans += t; } } } cout << ans << endl; REP(i,N){ if(i) cout << " "; cout << A[i]; } cout << endl;*/ return 0; }