Submission #14677

#TimeUsernameProblemLanguageResultExecution timeMemory
14677Fakeable전봇대 (KOI13_pole)C++98
100 / 100
32 ms1980 KiB
#include<cstdio> #include<vector> #include<algorithm> using namespace std; typedef long long ll; int n,t; vector<int> v; inline ll Abs(ll x) { return x>0?x:-x; } ll calc(ll p) { ll ret = 0; for(int i=1;i<n;i++) ret += Abs(v[i]-i*p); return ret; } int search(int front,int rear) { if(front == rear) return front; int mid = (front + rear) / 2; ll first = calc(mid); ll second = calc(mid+1); if(first < second) return search(front, mid); return search(mid+1, rear); } int main() { scanf("%d",&n); for(int i=0;i<n;i++) { scanf("%d",&t); v.push_back(t); } int M = 0; for(int i=1;i<n;i++) M = max(M, v[i]/i+1); int dydx = search(1,M); ll ans = 0; for(int i=1;i<n;i++) ans += Abs(v[i]-i*dydx); printf("%lld\n",ans); return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...