Cod sursa(job #2998970)

Utilizator angonio.grAntonio Grigorascu angonio.gr Data 10 martie 2023 12:19:49
Problema Barman Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.52 kb
#include <fstream>
using namespace std;

ifstream cin("barman.in");
ofstream cout("barman.out");

int vec[603],sorted[603];
int ind,n,result,c,x,aux;
int picked;

int finding(int val){
    for(int i=0;i<n;i++){
        if(vec[i]=val){
            return i;
        }
    }
}

void pick(int val){
    picked=val;
    result+=20;
}

void func(int i){
    int poz=finding(sorted[i]);
    int v1=sorted[(i-1)%n];
    int v2=sorted[(i+1)%n];
    if(vec[(poz-1)%n]==v1 && vec[(poz+1)%n]==v2){return;}
    if(vec[(poz-1)%n]!=v1 && vec[(poz+1)%n!=v2]){
        pick(vec[poz]);
        for(int j=0;j<n;j++){
            if(vec[j]==v1 && vec[(j+1)%n]==v2){
                x=j;
                break;
            }
        }
        int dist1,dist2;
        if(x>poz){
            dist1=x-poz;
            dist2=n-x+poz;
        }
        else{
            dist1=poz-x;
            dist2=n-poz+x;
        }

        if(dist1<dist2){result+=dist1;}
        else{result+=dist2;}
        aux=vec[x];
        vec[x]=picked;
        pick(aux);
        func((x-1)%n);
    }

}



int main()
{
    cin>>n;
    for(int i=0;i<n;i++){
        cin>>vec[i];
        sorted[i]=vec[i];
    }
    for(int i=0;i<n;i++){
        for(int j=0;j<n;j++){
            if(vec[i]>vec[j]){
                aux=vec[i];
                vec[i]=vec[j];
                vec[j]=aux;
            }
        }
    }


    x=0;
    for(int i=0;i<n;i++){
        func(i);


    }

    cout<<result;

    return 0;
}