Submission #421132

#TimeUsernameProblemLanguageResultExecution timeMemory
421132daanolavArranging Shoes (IOI19_shoes)C++14
10 / 100
1 ms204 KiB
#include "shoes.h"
#include <vector>
#include <bitset>
#include <tuple>
#include <cmath>


using namespace std;

typedef vector<int> vi;
typedef pair<vi,bool> vib;


int n,num,shoeSize,index,first,second;


long long count_swaps(std::vector<int> s) {
    n = s.size() / 2;
	vib sizes[n + 1];

	long long swapsNeeded = 0;

	for(index = 0; index < 2 * n; ++index) {
        num = s[index];
        //cerr << "shoe num " << index << " is " << num << endl;
        shoeSize = abs(num);
        if(sizes[shoeSize].first.size() == 0) {
            sizes[shoeSize].first.push_back(index);
            sizes[shoeSize].second = num > 0;
        } else if((num > 0) == sizes[shoeSize].second) {
            sizes[shoeSize].first.push_back(index);
        } else {
            first = num < 0 ? index : sizes[shoeSize].first[0];
            second = num > 0 ? index : sizes[shoeSize].first[0];
            if(second > first) {
                swapsNeeded += second - first - 1;
            } else {
                swapsNeeded += first - second;
            }
            sizes[shoeSize].first.erase(sizes[shoeSize].first.begin());
        }
	}

	return swapsNeeded;

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