제출 #200467

#제출 시각아이디문제언어결과실행 시간메모리
200467Leonardo_PaesArranging Shoes (IOI19_shoes)C++17
10 / 100
88 ms4588 KiB
#include <bits/stdc++.h>

using namespace std;

const int maxn = 1e5+10;

typedef long long ll;
typedef pair<int,int> pii;

int n, mark[maxn], bit[maxn];

ll sum(int x){
    ll res = 0;
    while(x>0){
        res += bit[x];
        x -= (x&-x);
    }
    return res;
}

int upd(int x, int v){
    while(x<=n){
        bit[x] += v;
        x += (x&-x);
    }
}

ll count_swaps(vector<int> s){
    n = s.size();

    ll ans = 0LL;

    vector<pii> l, r;

    for(int i=0; i<n; i++){
        mark[abs(s[i])]++;
        if(mark[abs(s[i])]&1){
            l.push_back({abs(s[i]), i});
            if(s[i] > 0) ans++;
        }
        else{
            r.push_back({abs(s[i]), i});
        }
    }

    sort(l.begin(), l.end());
    sort(r.begin(), r.end());

    for(int i=0; i<l.size(); i++){
        r[i].first = l[i].second;
        l[i].first = l[i].second;
    }

    sort(l.begin(), l.end());
    sort(r.begin(), r.end());

    int tt = 0;

    for(int i=0; i<l.size(); i++){
        s[l[i].second] = ++tt;
        s[r[i].second] = ++tt;
    }

    for(int i=0; i<n; i++){
        upd(s[i], 1);
        ans += sum(n) - sum(s[i]);
    }

    return ans;
}

/*int main(){
    int n;

    cin >> n;

    vector<int> s;

    while(n--){
        int x;
        cin >> x;
        s.push_back(x);
    }

    cout << count_swaps(s) << endl;
}*/

컴파일 시 표준 에러 (stderr) 메시지

shoes.cpp: In function 'int upd(int, int)':
shoes.cpp:26:1: warning: no return statement in function returning non-void [-Wreturn-type]
 }
 ^
shoes.cpp: In function 'll count_swaps(std::vector<int>)':
shoes.cpp:49:19: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i=0; i<l.size(); i++){
                  ~^~~~~~~~~
shoes.cpp:59:19: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i=0; i<l.size(); 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...