제출 #1325070

#제출 시각아이디문제언어결과실행 시간메모리
1325070testerArranging Shoes (IOI19_shoes)C++20
0 / 100
1103 ms67140 KiB
#include<bits/stdc++.h>
#include "shoes.h"
using namespace std;
using ll=long long;
long long brute(vector<int> &s){
	ll ans=0;
	for(int i=0;i<s.size();i+=2){
		int mn;
		for(int j=0;j<i;++j){
			if(s[j]<0){
				mn=j; 
				break;
			}
		}
		for(int j=i;j<s.size();++j){
			if(s[j]<0){
				if(i-mn<j-i){
					swap(s[mn],s[i]);
					ans+=i-mn;
				}
				else{
					swap(s[j],s[i]);
					ans+=j-i;
				}
				break;
			}
		}
	}
	cout<<ans<<'\n';
}
long long count_swaps(std::vector<int> s) {
	ll ans=0;
	set<int> pos;
	for(int i=0;i<s.size();++i){if(s[i]<0) pos.insert(i);}
	for(int i=0;i<s.size();i+=2){
		auto low=pos.lower_bound(i);
		if(low==pos.begin()){
			ans+=(*low-i);
			pos.erase(low);
			continue;
		}
		auto up=low--;
		if(up==pos.end()||i-*low<*up-i){
			ans+=(i-*low);
			pos.erase(low);
			continue;
		}
		ans+=(*up-i);
		pos.erase(up);
	}
	assert(brute(s)==ans);
	return ans;
}

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

shoes.cpp: In function 'long long int brute(std::vector<int>&)':
shoes.cpp:30:1: warning: no return statement in function returning non-void [-Wreturn-type]
   30 | }
      | ^
#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...