Submission #1011140

#TimeUsernameProblemLanguageResultExecution timeMemory
1011140rythm_of_knightArranging Shoes (IOI19_shoes)C++14
0 / 100
1 ms348 KiB
#include "shoes.h"
#include <bits/stdc++.h>
#define ll long long
using namespace std;
 
struct Fenwick{
    vector<int> tr;
    int sz;
    Fenwick(int N){
        tr.resize(N+1);
        sz=N;
    }
    void add(ll i, ll x){
        for (; i<=sz; i+=(-i&i)) tr[i]+=x;
    }
    ll get(ll i){
        ll sum=0;
        for (; i; i-=(i&-i)) sum+=tr[i];
        return sum;
    }
};
long long count_swaps(vector<int> s) {
	int n = s.size(), x;
	ll ans = 0, res = 0;
    vector <int> v = s;
    // cin >> n;
//    sgt st;
//    st.init(n);
    Fenwick tr(n+2);
	int p = 0, m = 0;
    for (int i = 0; i < n; i++) {
//        cin >> x;
        x = s[i];
        // x = v[i];
        if (x > 0) {
            if (m) {
                m--;
                int it = 0, j = i;
                for (; it < j && (s[it] != -x || s[it] == -x && s[it + 1] != x); it++);
                // int l = it + tr.get(it+1), r = i;
                it++;
                // cout << it << ' ' << j << ' ';
                while (j > it)
                    swap(s[j], s[j - 1]), j--, res++;
                // ans += r - l - 1;
                // tr.add(l+1, 1);
                // tr.add(r+2, -1);
            } else {
                p++;
            }
        } else {
            x = -x;
            if (p) {
                p--;
                int j = i, it = 1;
                if (s[it] != x)
					for (; it < j && (s[it] != x || s[it] == x && s[it - 1] != -x); it++);
                else
                	it = 0;
				// cout << it << ' ' << j << ' ' << flush;
                while (j > it)
                    swap(s[j], s[j - 1]), j--, res++;
                // int l = it + tr.get(it+1), r = i;
                // ans += r - l;
                // tr.add(l+1, 1);
                // tr.add(r+2, -1);
            } else {
                m++;
            }
        }
    }
	return res;
}

Compilation message (stderr)

shoes.cpp: In function 'long long int count_swaps(std::vector<int>)':
shoes.cpp:39:62: warning: suggest parentheses around '&&' within '||' [-Wparentheses]
   39 |                 for (; it < j && (s[it] != -x || s[it] == -x && s[it + 1] != x); it++);
shoes.cpp:57:49: warning: suggest parentheses around '&&' within '||' [-Wparentheses]
   57 |      for (; it < j && (s[it] != x || s[it] == x && s[it - 1] != -x); it++);
shoes.cpp:24:5: warning: unused variable 'ans' [-Wunused-variable]
   24 |  ll ans = 0, res = 0;
      |     ^~~
#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...