Submission #391998

#TimeUsernameProblemLanguageResultExecution timeMemory
391998AugustinasJucasArranging Shoes (IOI19_shoes)C++14
10 / 100
4 ms4996 KiB
#include <bits/stdc++.h>
using namespace std;

const int dydis = 1e5  + 1;
vector<int> kurL[dydis];
vector<int> kurR[dydis];
long long count_swaps(vector<int> s) {

    for(int i = 0; i < s.size(); i++){
        if(s[i] > 0) kurR[s[i]].push_back(i);
        else kurL[-s[i]].push_back(i);
    }
    vector<pair<int, int> > poros;
    int n = s.size()/2;
    for(int i = 1; i <= n; i++){
        for(int j = 0; j < kurL[i].size(); j++){
            if(kurL[i][j] < kurR[i][j]){
                poros.push_back({kurL[i][j], kurR[i][j]-1});
            }else{
                poros.push_back({kurR[i][j], kurL[i][j]});
            }
        }
    }
    sort(poros.begin(), poros.end());
    reverse(poros.begin(), poros.end());

    int realIndex[s.size() + 1];
    for(int i = 0; i < s.size(); i++) realIndex[i] = i;
    int ans = 0;
    for(auto x : poros){
        int i1 = realIndex[x.first];
        int i2 = realIndex[x.second];
        ans += i2-i1;
        for(int i = i1+1; i < i2; i++){
            realIndex[i]--;
        }
    }


	return ans;
}

Compilation message (stderr)

shoes.cpp: In function 'long long int count_swaps(std::vector<int>)':
shoes.cpp:9:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    9 |     for(int i = 0; i < s.size(); i++){
      |                    ~~^~~~~~~~~~
shoes.cpp:16:26: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   16 |         for(int j = 0; j < kurL[i].size(); j++){
      |                        ~~^~~~~~~~~~~~~~~~
shoes.cpp:28:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   28 |     for(int i = 0; i < s.size(); i++) realIndex[i] = i;
      |                    ~~^~~~~~~~~~
#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...