제출 #1356022

#제출 시각아이디문제언어결과실행 시간메모리
1356022vjudge1Arranging Shoes (IOI19_shoes)C++20
컴파일 에러
0 ms0 KiB
#include <bits/stdc++.h>
#include "shoes.h"
using namespace std;
const int MX = 100100;

struct A{
	int l,r,mn;
	bool operator<(const A&o)const{
		return mn<o.mn;
	}
};

vector<int>l[MX],r[MX];
vector<A>ord;
int fw[MX],n;

int query(int i){
	int ret = 0;
	for(;i;i-=(i&-i))ret+=fw[i];
	return ret;
}

void upd(int i){
	for(;i<=n;i+=(i&-i))fw[i]--;
}


long long count_swaps(std::vector<int> s) {
	int N = s.size()/2;
	n = s.size();
	for(int i=0;i<s.size();i++){
		if(s[i]<0)l[-s[i]].push_back(i);
		else r[s[i]].push_back(i);
	}
	for(int i=1;i<=N;i++){
		for(int j=0;j<l[i].size();j++){
			ord.push_back({l[i][j],r[i][j],min(l[i][j],r[i][j])});
		}
	}
	vector<int>ans(s.size());
	sort(ord.begin(),ord.end());
	for(int i=0;i<ord.size();i++){
		ans[ord[i].l] = i*2;
		ans[ord[i].r] = i*2+1;
	}
	int ret = 0;
	for(int i=0;i<s.size();i++){
		ret+=i+query(ans[i]+1);
		upd(ans[i]+1);
	}
	return ret;
}

int main() {
	int n;
	assert(1 == scanf("%d", &n));
	vector<int> S(2 * n);
	for (int i = 0; i < 2 * n; i++)
		assert(1 == scanf("%d", &S[i]));
	fclose(stdin);

	long long result = count_swaps(S);

	printf("%lld\n", result);
	fclose(stdout);
	return 0;
}


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

/usr/bin/ld: /tmp/cccpnKag.o: in function `main':
grader.cpp:(.text.startup+0x0): multiple definition of `main'; /tmp/ccCowBQZ.o:shoes.cpp:(.text.startup+0x0): first defined here
collect2: error: ld returned 1 exit status