제출 #1021192

#제출 시각아이디문제언어결과실행 시간메모리
1021192vjudge1Arranging Shoes (IOI19_shoes)C++17
10 / 100
2 ms4956 KiB
#include "shoes.h"
#include<iostream>
#include<vector>
using namespace std;

int st[400001],v[400001];
vector<int>sh[100001],sq[100001];

void bld(int nd,int l,int r){
    if(l==r)st[nd]=1,v[l]=1;
    else{
        int m=(l+r)/2;
        bld(nd*2,l,m);
        bld(nd*2+1,m+1,r);
        st[nd]=st[nd*2]+st[nd*2+1];
    }
}

int val(int nd,int l,int r,int p,int q){
    if(r<p||q<l)return 0;
    if(p<=l&&r<=q)return st[nd];
    int m=(l+r)/2;
    return val(nd*2,l,m,p,q)+val(nd*2+1,m+1,r,p,q);
}

void upd(int nd,int l,int r,int p){
    if(p<l||r<p)return;
    if(l==r)st[nd]=0,v[l]=0;
    else{
        int m=(l+r)/2;
        upd(nd*2,l,m,p);
        upd(nd*2+1,m+1,r,p);
        st[nd]=st[nd*2]+st[nd]*2+1;
    }
}

long long count_swaps(vector<int>s){
    long long r=0;
    bld(1,0,s.size()-1);
    for(int i=0;i<s.size();i++){
        if(s[i]<0)sq[-s[i]].push_back(i);
        else sh[s[i]].push_back(i);
    }
    for(int i=s.size()-1;0<=i;i--){
        if(v[i]){
            if(s[i]<0){
                r+=val(1,0,s.size()-1,sh[-s[i]].back(),i-1);
                upd(1,0,s.size()-1,sh[-s[i]].back());
                sh[-s[i]].pop_back();
                sq[-s[i]].pop_back();
            }else{
                r+=val(1,0,s.size()-1,sq[s[i]].back(),i-1)-1;
                upd(1,0,s.size()-1,sq[s[i]].back());
                sh[s[i]].pop_back();
                sq[s[i]].pop_back();
            }
        }
    }
	return r;
}

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

shoes.cpp: In function 'long long int count_swaps(std::vector<int>)':
shoes.cpp:40:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   40 |     for(int i=0;i<s.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...