Cod sursa(job #2840755)

Utilizator mihhTURCU MIHNEA ALEXANDRU mihh Data 28 ianuarie 2022 18:37:33
Problema Atac Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <bits/stdc++.h>
using namespace std;

const int INF=2e9;

int best[2][200005];

int main(){
    ifstream fin("profit.in");
    ofstream fout("profit.out");
    int n; fin>>n;
    int vmax=0;
    vector<int> a(n+1,0);
    for(int i=1;i<=n;++i){
        fin>>a[i];
        vmax=max(a[i],vmax);
    }
    //the phun begins
    for(auto &x:best){
        for(auto &y:x){
            y=INF;
        }
    }
    int ans=INF;
    int used=1;
    for(int i=1;i<=n;++i){
        used=!used;
        for(int x=1;x<=vmax;++x){
            best[used][x]=INF;
            if(i==1)
                best[used][x]=abs(x-a[i]);
            else{
                for(int y=1;y<=x;++y)
                    best[used][x]=min(best[!used][y]+abs(a[i]-x), best[used][x]);
            }
            if(i==n)
                ans=min(best[used][x],ans);
            cout<<best[used][x]<<" ";
        }
        cout<<"\n";
    }
    fout<<ans;
}