제출 #823065

#제출 시각아이디문제언어결과실행 시간메모리
823065vjudge1Arranging Shoes (IOI19_shoes)C++17
65 / 100
24 ms3280 KiB
#include "shoes.h"
#include <bits/stdc++.h>
using namespace std;

long long count_swaps(vector<int> s) {
	long long ans = 0, x = 0, n = s.size(), sum = 0;
	queue <long long> q[2];
	bool flag = 0;
	long long last = 0;
	for (auto it : s){
		if (last != 0 && last != abs(it))
			flag = 1;
		else
			last = abs(it);
	}
	if (n <= 2000){
		while (s.size() > 0){
			for (int j = 1 ; j < s.size() ; j++){
				if (s[0] * -1 == s[j]){
					ans+=j - 1;
					if (s[0] > 0)
						ans++;
					//cout << 0 << " " << j << '\n';
					s.erase(s.begin() + j, s.begin() + j + 1);
					s.erase(s.begin() + 0, s.begin() + 0 + 1);
					break ;
				}
			}
		}
		return ans;
	}
	else if (!flag){
		n--;
		return (n/2) * ((n/2) + 1)/2;
	}
	else{
		for (int i = 0 ; i < n ; i++){
			//cout << s[i] << " " << last[s[i] * -1] << "\n";
			if (!q[s[i] > 0].empty()){
				ans+=i - q[s[i] > 0].front() - 1;
				if (s[i] < 0)
					ans++;
				x--;
				q[s[i] > 0].pop();
			}
			else{
				q[s[i] < 0].push(i + x);
				x++;
			}
		}
		return ans;
	}
}

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

shoes.cpp: In function 'long long int count_swaps(std::vector<int>)':
shoes.cpp:18:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   18 |    for (int j = 1 ; j < s.size() ; j++){
      |                     ~~^~~~~~~~~~
shoes.cpp:6:42: warning: unused variable 'sum' [-Wunused-variable]
    6 |  long long ans = 0, x = 0, n = s.size(), sum = 0;
      |                                          ^~~
#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...