Submission #1323957

#TimeUsernameProblemLanguageResultExecution timeMemory
1323957aritro_Arranging Shoes (IOI19_shoes)C++20
65 / 100
1094 ms3240 KiB
//#include "shoes.h"
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define pb push_back

ll count_swaps(std::vector<int> a){
    int n=a.size();
    bool b=1;
    for(int i=0;i<n;i++) if(a[0]!=a[i]) b=0;
    bool b2=1;
    for(int i=0;i<(n/2);i++){
        if(a[i]>0) b2=0;
        if(a[i+(n/2)]!=abs(a[i])) b2=0;
    }
    if(b2||b){
        string s="";
        for(int i=0;i<n;i++){
            if(a[i]>0) s+='R';
            else s+='L';
        }
        //cout<<s<<endl;
        vector<ll> l;
        for(int i=0;i<n;i++) if(s[i]=='L') l.pb(i);
        ll ans=0;
        for(int i=0;i<(n/2);i++) ans+=abs(l[i]-(2*i)); 
        return ans;
    }

    ll l=0,r=0;
    ll ans=0;
    while(l<n){
 	    r++;
 	    int k=-1*a[l];
 	    if(k==a[r]){
 		    ans+=r-l-1;
 		    for(int i=r;i>l+1;i--) swap(a[i],a[i-1]);
 			if(a[l]>0){
 				ans++;
 				swap(a[l],a[l+1]);
 			}
 			l+=2;
 		    r=l;
 		}
 	}
 	return ans;
}
#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...