답안 #1099050

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1099050 2024-10-10T12:50:59 Z ohad Boarding Passes (BOI22_passes) C++14
0 / 100
2 ms 348 KB
#include <iostream>
#include <vector>
#include <cmath>
#include <iomanip>
#include <stdio.h>
#include <algorithm>
#include <map>
using namespace std;
typedef long double ld;

int main() {
	string a;
	cin >> a;
	int size = a.length();
	vector<bool> chars(26, 0);
	for (auto i : a)
	{
		chars[i - 'A'] = 1;
	}
	vector<int> tosort;
	for (int i = 0; i < 26; i++)
	{
		if (chars[i] == 1)
			tosort.push_back(i);
	}
	sort(tosort.begin(), tosort.end());
	map<int, int> m;
	int counter = 0;
	for (auto i : tosort)
	{
		m[i] = counter;
		counter++;
	}

	vector<int> actual(size, 0);
	for (int i = 0; i < size; i++)
	{
		actual[i] = m[a[i] - 'A'];
	}
	int g = tosort.size();
	vector<int> permutation(g);
	for (int i = 0; i < g; i++)
	{
		permutation[i] = i + 1;
	}
	ld optimal = 1e9;
	do {
		ld t = 0;
		for (int i = 0; i < size; i++)
		{
			ld pas1 = 0;
			ld pas2 = 0;
			for (int j = 0; j < i; j++)
			{
				if (permutation[actual[j]] < permutation[actual[i]])
					pas1 += 1;
				else if (actual[i] == actual[j])
					pas1 += 0.5;
			}
			for (int j = size; j > i; j--)
			{
				if (permutation[actual[j]] < permutation[actual[i]])
					pas2 += 1;
				else if (actual[i] == actual[j])
					pas2 += 0.5;
			}
			if (pas2 < pas1)
				swap(pas1, pas2);
			t += pas1;
		}
		if (t+0.00001 < optimal)
			optimal = t;

	} while (next_permutation(permutation.begin(), permutation.end()));
	cout << fixed << setprecision(6) << optimal;
}
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 348 KB 1st numbers differ - expected: '100800.5000000000', found: '101025.0000000000', error = '0.0022271715'
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 348 KB 1st numbers differ - expected: '1.0000000000', found: '3.5000000000', error = '2.5000000000'
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 348 KB 1st numbers differ - expected: '1.0000000000', found: '3.5000000000', error = '2.5000000000'
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 348 KB 1st numbers differ - expected: '100800.5000000000', found: '101025.0000000000', error = '0.0022271715'
2 Halted 0 ms 0 KB -