Submission #1287397

#TimeUsernameProblemLanguageResultExecution timeMemory
1287397eri16Arranging Shoes (IOI19_shoes)C++20
85 / 100
14 ms1968 KiB
#include <bits/stdc++.h>
using namespace std;

long long count_swaps(vector <int> v){
    
    long long cnt=0;
    
    long long cur=0;    
    
    int z=abs(v[0]);
    int ttt=1;
    
    
    for (int i=0; i<v.size(); i++){    
        if (abs(v[i])!=abs(z)){
            ttt=0;
        }
    }
    
    if (v.size()<2005){
    
    for (int i=0; i<v.size(); i++){
        if (i%2==0){
        
            cur=(v[i])*(-1);
                    
            int k=v[i];
                    
            v[i]=k;
            
        }    
        
        else{
            for (int j=i; j<v.size(); j++){
                if (v[j]==cur){
                    cnt+=(j-i);
                    
                    int k=v[j];
                    
                    for (int ii=j; ii>i; ii--){
                        v[ii]=v[ii-1];
                    }
                    
                    v[i]=k;
                    
                    break;                    
                }    
            }
            
            if (v[i]<v[i-1]){
                cnt++;
            }
            
        }
        /*
        for (int i=0; i<v.size(); i++){
            cout<<v[i]<<' ';
        }
        cout<<"\n";
        */
    }
    return cnt;
    }
    else if(ttt==1){
     
    long long k1=0;
    long long k2=0;
    long long ans=0;
    for (int i=0; i<v.size(); i++){
        if (v[i]>0){
            ans+=abs(k1*2+1-i);
            k1++;
        }    
        if (v[i]<0){
            ans+=abs(k2*2-i);
            k2++;
        }          
    }
    return ans/2;
    }
    return ((v.size()/2)*(v.size()/2-1)/2);
}

#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...