제출 #155330

#제출 시각아이디문제언어결과실행 시간메모리
155330Sasuke0004Arranging Shoes (IOI19_shoes)C++17
컴파일 에러
0 ms0 KiB
#include<bits/stdc++.h>
#define f first
#define s second
#define mp make_pair
#define ll long long
#define pb push_back
#define left 2*h,l,(l+r)/2,L,R
#define right 2*h+1,(l+r)/2+1,r,L,R
#define tree int h,int l,int r,int L,int R
using namespace std;
ll sg[2000006],fx[2000006],n,ans;
vector<int>v[2000006],x;
void upd(tree)
{
    if(l>r)return;
    if(l>R)return;
    if(L>r)return;
    if(l==r)
    {
        sg[h]=sg[h]^(1);
        return;
    }
    sg[h]=sg[2*h]+sg[2*h+1];
}
ll get(tree)
{
    if(l>r)return 0;
    if(l>R)return 0;
    if(L>r)return 0;
    if(l>=L && r<=R)return sg[h];
    else return get(left)+get(right);
}
int64_t count_swaps(vector<int> x)
{
    n=x.size();
    for(int i=0;i<n;i++)
    {
        v[n+x[i]].pb(i);
    }
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<int(v[i].size());j++)
        {
            if(v[i][j]>v[i+n][j]){ans++;swap(v[i][j],v[i+n][j]);}
            fx[v[i][j]]=v[i+n][j];
        }
    }
    for(int i=0;i<n;i++)
    {
        upd(1,0,n-1,i,i);
    }
    for(int i=0;i<n;i++)
    {
        ans+=get(1,0,n-1,i,fx[i]);
        upd(1,0,n-1,fx[i],fx[i]);
    }
    return ans;
}
#include<bits/stdc++.h>
#define f first
#define s second
#define mp make_pair
#define ll long long
#define pb push_back
#define left 2*h,l,(l+r)/2,L,R
#define right 2*h+1,(l+r)/2+1,r,L,R
#define tree int h,int l,int r,int L,int R
using namespace std;
ll sg[2000006],fx[2000006],n,ans;
vector<int>v[2000006],x;
void upd(tree)
{
    if(l>r)return;
    if(l>R)return;
    if(L>r)return;
    if(l==r)
    {
        sg[h]=sg[h]^(1);
        return;
    }
    sg[h]=sg[2*h]+sg[2*h+1];
}
ll get(tree)
{
    if(l>r)return 0;
    if(l>R)return 0;
    if(L>r)return 0;
    if(l>=L && r<=R)return sg[h];
    else return get(left)+get(right);
}
int64_t count_swaps(vector<int> x)
{
    n=x.size();
    for(int i=0;i<n;i++)
    {
        v[n+x[i]].pb(i);
    }
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<int(v[i].size());j++)
        {
            if(v[i][j]>v[i+n][j]){ans++;swap(v[i][j],v[i+n][j]);}
            fx[v[i][j]]=v[i+n][j];
        }
    }
    for(int i=0;i<n;i++)
    {
        upd(1,0,n-1,i,i);
    }
    for(int i=0;i<n;i++)
    {
        ans+=get(1,0,n-1,i,fx[i]);
        upd(1,0,n-1,fx[i],fx[i]);
    }
    return ans;
}

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

shoes.cpp:69:14: error: redefinition of 'long long int sg [2000006]'
 ll sg[2000006],fx[2000006],n,ans;
              ^
shoes.cpp:11:4: note: 'long long int sg [2000006]' previously declared here
 ll sg[2000006],fx[2000006],n,ans;
    ^~
shoes.cpp:69:26: error: redefinition of 'long long int fx [2000006]'
 ll sg[2000006],fx[2000006],n,ans;
                          ^
shoes.cpp:11:16: note: 'long long int fx [2000006]' previously declared here
 ll sg[2000006],fx[2000006],n,ans;
                ^~
shoes.cpp:69:28: error: redefinition of 'long long int n'
 ll sg[2000006],fx[2000006],n,ans;
                            ^
shoes.cpp:11:28: note: 'long long int n' previously declared here
 ll sg[2000006],fx[2000006],n,ans;
                            ^
shoes.cpp:69:30: error: redefinition of 'long long int ans'
 ll sg[2000006],fx[2000006],n,ans;
                              ^~~
shoes.cpp:11:30: note: 'long long int ans' previously declared here
 ll sg[2000006],fx[2000006],n,ans;
                              ^~~
shoes.cpp:70:21: error: redefinition of 'std::vector<int> v [2000006]'
 vector<int>v[2000006],x;
                     ^
shoes.cpp:12:12: note: 'std::vector<int> v [2000006]' previously declared here
 vector<int>v[2000006],x;
            ^
shoes.cpp:70:23: error: redefinition of 'std::vector<int> x'
 vector<int>v[2000006],x;
                       ^
shoes.cpp:12:23: note: 'std::vector<int> x' previously declared here
 vector<int>v[2000006],x;
                       ^
shoes.cpp: In function 'void upd(int, int, int, int, int)':
shoes.cpp:71:6: error: redefinition of 'void upd(int, int, int, int, int)'
 void upd(tree)
      ^~~
shoes.cpp:13:6: note: 'void upd(int, int, int, int, int)' previously defined here
 void upd(tree)
      ^~~
shoes.cpp: In function 'long long int get(int, int, int, int, int)':
shoes.cpp:83:4: error: redefinition of 'long long int get(int, int, int, int, int)'
 ll get(tree)
    ^~~
shoes.cpp:25:4: note: 'long long int get(int, int, int, int, int)' previously defined here
 ll get(tree)
    ^~~
shoes.cpp: In function 'int64_t count_swaps(std::vector<int>)':
shoes.cpp:91:9: error: redefinition of 'int64_t count_swaps(std::vector<int>)'
 int64_t count_swaps(vector<int> x)
         ^~~~~~~~~~~
shoes.cpp:33:9: note: 'int64_t count_swaps(std::vector<int>)' previously defined here
 int64_t count_swaps(vector<int> x)
         ^~~~~~~~~~~