제출 #231199

#제출 시각아이디문제언어결과실행 시간메모리
231199UserIsUndefinedArranging Shoes (IOI19_shoes)C++14
컴파일 에러
0 ms0 KiB
/**
 *    author:  Mohamad Milhem
 *    created: 2020-05-13-05.41.20
**/
#include "shoes.h"
#include <bits/stdc++.h>
#include <stdio.h>

using namespace std;
typedef long long ll;

#define FAST ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
#define mp make_pair
#define pb push_back
#define lp(i,s,f) for(ll i = s; i < ll(f); i++)
#define inF freopen("input.in", "r", stdin);
#define outF freopen("output.in", "w", stdout);
#define MOD ll(1000000007)
#define debug(x) cout << '[' << #x << " is: " << x << "] " <<endl;
#define decimalpoint cout << std::fixed << setprecision(5)

map<int,bool[100005]> need;
int bro[100005];
int seg[400005];



void update(int p , int s, int e, int i){
    if (s == e){
        seg[p] = 1;
        return;
    }


    if (i <= (s+e)/2) update(p*2 , s , (s+e)/2 , i);
    else update(p*2 + 1 , (s+e)/2 + 1 , e , i);

    seg[p] = seg[p*2] + seg[p*2 + 1];
}



ll gett(int p , int s , int e , int a , int b){
    if ((s >= a)&&(e <= b)){
        return seg[p];
    }
    if ((s > b)||(a > e)){
        return 0;
    }

    return gett(p*2 , s , (s+e)/2 , a , b) + gett(p*2 + 1 , (s+e)/2 + 1 , e , a , b);

}



long long count_swaps(std::vector<int> v) {
	ll n = v.size();
	need.clear();
    memset(bro, 0 , sizeof bro);
    memset(nothing , 0 , sizeof nothing);
    memset(seg , 0 , sizeof seg);

    for (int i = 0 ; i < n ; i++){
        int needed = v[i]*-1;
        auto here = need[needed].begin();
        if (here == need[needed].end()){
            need[v[i]][i] = true;
        }
        else {
            int first = here->first;
            int second = i;
            bro[first] = second;
            need[needed].erase(first);
        }
    }

    ll ans = 0;


    for (ll i = 0 ; i < n ; i++){
        ll now = v[i];

        if (bro[i] == 0)continue;

        ll cont = 0;

        cont = gett(1 , 0 , n - 1 , i + 1 , bro[i] - 1);
        update(1 , 0, n - 1 , bro[i]);
        int leftt = (now < 0);

        ll here = bro[i] - i - leftt - cont;

        ans+= here;

    }

    return ans;
}

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

shoes.cpp: In function 'long long int count_swaps(std::vector<int>)':
shoes.cpp:61:12: error: 'nothing' was not declared in this scope
     memset(nothing , 0 , sizeof nothing);
            ^~~~~~~
shoes.cpp:66:34: error: request for member 'begin' in 'need.std::map<int, bool [100005]>::operator[](needed)', which is of non-class type 'std::map<int, bool [100005]>::mapped_type {aka bool [100005]}'
         auto here = need[needed].begin();
                                  ^~~~~
shoes.cpp:67:34: error: request for member 'end' in 'need.std::map<int, bool [100005]>::operator[](needed)', which is of non-class type 'std::map<int, bool [100005]>::mapped_type {aka bool [100005]}'
         if (here == need[needed].end()){
                                  ^~~
shoes.cpp:74:26: error: request for member 'erase' in 'need.std::map<int, bool [100005]>::operator[](needed)', which is of non-class type 'std::map<int, bool [100005]>::mapped_type {aka bool [100005]}'
             need[needed].erase(first);
                          ^~~~~