제출 #211148

#제출 시각아이디문제언어결과실행 시간메모리
211148vincent97198Arranging Shoes (IOI19_shoes)C++14
0 / 100
5 ms384 KiB
#include <bits/stdc++.h>
#include "shoes.h"
#define N 100005

using namespace std;

int BIT[2*N];

inline int lowbit(int x)
{
	return x&(-x);
}

void add(int pos,int val)
{
	for(;pos<2*N;pos+=lowbit(pos))
		BIT[pos]+=val;
}

int sum(int pos)
{
	int ret=0;
	for(;pos>0;pos-=lowbit(pos))
		ret+=BIT[pos];
	return ret;
}

long long count_swaps(vector<int> S)
{
	map<long long,queue<int>> mp;
	
	long long ans=0;
	for(int i=0;i<S.size();++i){
		mp[S[i]].push(i);
		add(i+1,1);
	}
	for(int i=0;i<S.size();++i){
		if(mp[S[i]].empty() || mp[S[i]].front()!=i)	continue;
		mp[S[i]].pop();
		int t=mp[-S[i]].front();	mp[-S[i]].pop();
		if(S[i]>0)
			++ans;
		ans+=(sum(t-1)-sum(i+1));
		add(t+1,-1);
	}
	return ans;
}

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

shoes.cpp: In function 'long long int count_swaps(std::vector<int>)':
shoes.cpp:33:15: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(int i=0;i<S.size();++i){
              ~^~~~~~~~~
shoes.cpp:37:15: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  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...