제출 #520411

#제출 시각아이디문제언어결과실행 시간메모리
520411meperdonas203Archery (IOI09_archery)C++17
14 / 100
2094 ms5700 KiB
#include<bits/stdc++.h>
using namespace std;
int r,n,yo;
vector<int>habilidades;
vector<pair<int,int>>campo;
vector<int>posciciones;
void ronda(){
    for(int i=0;i<n;i++){
        if(campo[i].first>campo[i].second){
            swap(campo[i].first,campo[i].second);
        }
    }
    int aux=campo[0].second;
    campo[0].second=campo[1].first;
    for(int i=2;i<n;i++){
        campo[i-1].first=campo[i].first;
    }
    campo[n-1].first=aux;
}
int comprueba(int pos){
    int it=0;
    campo.clear();
    campo.resize(n,{0,0});
    posciciones.clear();
    posciciones.resize(n*2+2,0);
    campo[pos].first=habilidades[0];
    for(int i=1;i<n*2;i++){
        if(campo[it].first==0){
            campo[it].first=habilidades[i];
            posciciones[i]=it;
        }else if(campo[it].second==0){
            campo[it].second=habilidades[i];
            posciciones[i]=it;
        }else{
            it++;
            i--;
        }
    }
    for(int i=1;i<=2*n;i++){
        ronda();
    }
    int acomodo=0;
    for(int i=0;i<n;i++){
        if(campo[i].first==yo or campo[i].second==yo)acomodo=i;
    }
    int restantes=r-2*n;
    restantes%=n;
    acomodo-=restantes;
    acomodo+=n;
    acomodo%=n;
    return acomodo;
}
int main(){
    ios_base::sync_with_stdio(0);cin.tie(0);
    cin>>n>>r;
    habilidades.resize(n*2+2,0);
    campo.resize(n+2,{0,0});
    for(int i=0;i<n*2;i++)cin>>habilidades[i];
    yo=habilidades[0];
    int ans=-1;
    int minima=INT_MAX;
    //cout<<"xd\n";
    for(int i=0;i<n;i++){
        int res=comprueba(i);
        //for(auto x:campo)cout<<x.first<<' '<<x.second<<'\n';
        //cout<<res<<'\n';
        if(res<=minima){ans=i; minima=res;}
    }
    cout<<ans+1<<'\n';
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...