Submission #1233581

#TimeUsernameProblemLanguageResultExecution timeMemory
1233581retr0foxxArranging Shoes (IOI19_shoes)C++20
10 / 100
4 ms4936 KiB
#include "shoes.h"
#include <iostream>

using haha = int;
#define int long long

#define printf

#define MAXN 100005

std::vector<int> stack_neg[MAXN];
std::vector<int> stack_pos[MAXN];

long long count_swaps(std::vector<haha> s) {
    // printf("where is it breaking?\n");
    int result = 0;
    for (int i = 0; i < s.size(); ++i)
    {
        // printf("wat da hell\n");
        int current = s[i];
        int left = current < 0;
        current = std::abs(current);
        
        if (left && stack_pos[current].size())
        {
            printf("negative %i in index %i got a pair in %i\n", current, i, stack_pos[current].back());
            result += i - stack_pos[current].back();
            stack_pos[current].pop_back();
        }
        else if (left) stack_neg[current].push_back(i);
        
        if (!left && stack_neg[current].size())
        {
            printf("positive %i in index %i got a pair in %i\n", current, i, stack_neg[current].back());
            result += i - stack_neg[current].back() - 1;
            stack_neg[current].pop_back();
        }
        else if (!left) stack_pos[current].push_back(i);
    }
    
    // std::cout << result << std::endl;
	return result;
}
#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...