Submission #826889

#TimeUsernameProblemLanguageResultExecution timeMemory
826889vjudge1Arranging Shoes (IOI19_shoes)C++17
50 / 100
1084 ms5968 KiB
#include<bits/stdc++.h>
#include "shoes.h"

using namespace std;

#define all(x) x.begin(), x.end()
#define pb push_back
#define ll long long
#define vout(v) for(int i=0; i<v.size(); i++) cout<<v[i]<<' ';

int tt[10];

int t[1000100], b[1001000];

void build(int v, int l, int r){
	if(l == r){
		t[v] = 1;
		return;
	}
	int mid=(l+r)/2;
	build(v+v, l, mid);
	build(v+v+1, mid+1, r);
	t[v] = t[v+v]+t[v+v+1];
}

void upd(int v, int l, int r, int pos, int x){
	if(l == r){
		t[v] = x;
		return;
	}
	int mid=(l+r)/2;
	if(mid>=pos){
		upd(v+v, l, mid, pos, x);
	}
	else{
		upd(v+v+1, mid+1, r, pos, x);
	}
	t[v] = t[v+v]+t[v+v+1];
}

int get(int v, int l, int r, int L, int R){
	if(r < L or R < l){
		return 0;
	}
	if(L <= l and r <= R){
		return t[v];
	}
	int mid=(l+r)/2;
	return get(v+v, l, mid, L, R) + get(v+v+1, mid+1, r, L, R);
		

}

int pos1[400100], pos0[400100];

 
long long count_swaps(vector<int> a){
	int n = a.size();
	for(int i=0; i<n; i++){
		if(a[i] > 0) pos0[a[i]] = i;
		else pos1[-a[i]] = i;
		b[i] = 1;
	}

	ll ans=0;
	build(1, 1, n);
	for(int i=0; i<n; i+=2){   
		if(a[i] > 0){
			for(int j=i+1; j<n; j++){
				if(a[j] == -a[i]){
					for(int k=j; k>i; k--){
						swap(a[k], a[k-1]);
						ans++;
					}
					break;
				}
			}
		}
		else{
			for(int j=i+1; j<n; j++){
				if(a[j] == -a[i]){
					for(int k=j; k>i+1; k--){
						swap(a[k], a[k-1]);
						ans++;
					}
					break;
				}
			}
		}
	}

		
	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...