Submission #158388

# Submission time Handle Problem Language Result Execution time Memory
158388 2019-10-16T21:14:49 Z nickmet2004 Arranging Shoes (IOI19_shoes) C++14
10 / 100
139 ms 135092 KB
#include<bits/stdc++.h>
//#include<shoes.h>

using namespace std;

const int NAX = 1e5 + 5;

int N;
// fenwick tree to count range sums (+0 , +1 , +2)

int f[2 * NAX + 1];

void update(int idx , int u){
    ++idx;
    while(idx <= N){
        f[idx] += u;
        idx += idx & (-idx);
    }
}
long long sum(int idx){
    long long sum = 0;
    ++idx;
    while(idx){
        sum += f[idx];
        idx -= idx & (-idx);
    }
    return sum;
}
// 0 - negative x's , 1 - positive x's
queue<int> q[NAX][2];

long long count_swaps(vector<int> S){
    N = S.size();
    long long ans = 0;
    // update BIT
    for(int i = 0; i < N; ++i){
        update(i , 1);
    }
    for(int i = 0; i < N; ++i){
        int x = abs(S[i]);
        int k = S[i];
        int f , d;
        if(S[i] > 0){
            // opposite
            d = 0;
            // its
            f = 1;
        } else {
            d = 1;
            f = 0;
        }
        // when queue is empty
        int cur = 0;
        if(!q[x][f].empty()){
            //cerr << sum(i) << " sum(i) " << endl << sum(q[x][d].front() - 1) << "sum(qFRONT())" << endl;
            cur = sum(i) - sum(q[x][f].front() - 1) - 1;
            ans += cur;
            //ans += (sum(i) - sum(q[x][f].front() - 1) - 1);
            //cerr << "ans: " << ans << "tavdapirvelad" << endl;
            if(k > 0){
                --ans;
                //cerr << "ans: " << ans << " sabolood" << endl;
                if(cur){
                    update(q[x][f].front() , -1);
                    update(i - 1, 1);
                }
                q[x][f].pop();
            } else {
                update(i , -1);
                update(q[x][f].front() , 1);
                q[x][f].pop();
            }

        } else {
            q[x][d].push(i);
        }
    }
    return ans;
}
# Verdict Execution time Memory Grader output
1 Correct 137 ms 135008 KB Output is correct
2 Correct 135 ms 135004 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 137 ms 135008 KB Output is correct
2 Correct 135 ms 135004 KB Output is correct
3 Correct 135 ms 134948 KB Output is correct
4 Correct 135 ms 135032 KB Output is correct
5 Correct 136 ms 134944 KB Output is correct
6 Correct 139 ms 135092 KB Output is correct
7 Incorrect 137 ms 134940 KB Output isn't correct
8 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 137 ms 135008 KB Output is correct
2 Correct 135 ms 135004 KB Output is correct
3 Incorrect 137 ms 134920 KB Output isn't correct
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 136 ms 134976 KB Output is correct
2 Incorrect 136 ms 134896 KB Output isn't correct
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 137 ms 135008 KB Output is correct
2 Correct 135 ms 135004 KB Output is correct
3 Correct 135 ms 134948 KB Output is correct
4 Correct 135 ms 135032 KB Output is correct
5 Correct 136 ms 134944 KB Output is correct
6 Correct 139 ms 135092 KB Output is correct
7 Incorrect 137 ms 134940 KB Output isn't correct
8 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 137 ms 135008 KB Output is correct
2 Correct 135 ms 135004 KB Output is correct
3 Correct 135 ms 134948 KB Output is correct
4 Correct 135 ms 135032 KB Output is correct
5 Correct 136 ms 134944 KB Output is correct
6 Correct 139 ms 135092 KB Output is correct
7 Incorrect 137 ms 134940 KB Output isn't correct
8 Halted 0 ms 0 KB -