Submission #1230175

#TimeUsernameProblemLanguageResultExecution timeMemory
1230175samuelandrianoo_Arranging Shoes (IOI19_shoes)C++20
10 / 100
0 ms328 KiB
#include "shoes.h"

typedef long long ll;

ll count_swaps(std::vector<int> s) {
	ll n = s.size();

	ll arr[2 * n + 5];

	for (ll i = 0; i < 2 * n; i++){
		arr[i + 1] = s[i];
	}

	ll cnt = 0;
	
	for (ll i = 1; i <= 2 * n; i++){
		if (i & 1){
			if (-arr[i] == arr[i + 1] && arr[i] < 0 && arr[i + 1] > 0){
				i++;
				continue;
			}
			else {

                 //cout << i << endl;
				if (arr[i] < 0){ //pembuka
					ll near = 0;
					for (ll j = i + 1; j <= 2 * n; j++){
						if (arr[j] == -arr[i]){
							near = j;
							break;
						}
					}

					for (ll j = near - 1; j >= i; j--){
						ll nt = arr[j];
						arr[j] = arr[j + 1];
						arr[j + 1] = nt;
						cnt++;
					}

                    i++;
				}
				else if (arr[i] > 0){ //penutup
					ll near = 0;
					for (ll j = i + 1; j <= 2 * n; j++){
						if (arr[j] == -arr[i]){
							near = j;
							break;
						}
					}

					//cout << " nearest  : !   " <<  near << endl;

					for (ll j = near - 1; j >= i; j--){
						ll nt = arr[j];
						arr[j] = arr[j + 1];
						arr[j + 1] = nt;
						cnt++;
					}

                    i++;
				}
			}
		}
	}

	return cnt;
}
#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...