이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "shoes.h"
#include <bits/stdc++.h>
using namespace std;
int t,c=0;
vector<int> mergesort(vector<int>s){
if(s.size()==1) return s;
if(s.size()==2){
if(abs(s[0])>abs(s[1])){
swap(s[0],s[1]);
c++;
}
return s;
}
vector<int>a,b;
int mi=s.size()/2;
for(int i=0;i<mi;i++){
a.push_back(s[i]);
}
for(int i=mi;i<s.size();i++){
b.push_back(s[i]);
}
a=mergesort(a);
b=mergesort(b);
vector<int>n;
int i=0,j=0;
/*
for(int i=0;i<a.size();i++){
cout<<a[i]<<" ";
}
cout<<endl;
for(int i=0;i<b.size();i++){
cout<<b[i]<<" ";
}
cout<<endl<<endl;*/
i=j=0;
if(t==s.size()){
int cc=a.size()-1;
for(int i=0;i<a.size();i++){
if(a[i]<0) c+=cc;
if(a[i]>0) c=c+cc+1;
cc--;
}
return a;
}
while(true){
if(i==a.size() and j==b.size()) break;
if(i==a.size() and j<b.size()){
n.push_back(b[j]);j++;
continue;
}
if(j==b.size() and i<a.size()){
n.push_back(a[i]); i++;
continue;
}
if(abs(a[i])<abs(b[j])){
n.push_back(a[i]);
i++;
}
else{
n.push_back(b[j]);
j++;
}
}
return n;
}
int i,j,id;
long long count_swaps(std::vector<int> s) {
t=s.size();
s=mergesort(s);
/*bool sw=0;
int j=s.size()/2;
for(int i=0;i<s.size()/2;i++){
if(s[i]*(-1)!=s[j]){
sw=1;
break;
}
if(s[i]>=0){sw=1; break;}
if(s[j]<0){ sw=1; break;}
j++;
}
// cout<<sw<<endl;
if(sw==0){
long long acum=0;
for(int i=1;i<s.size()/2;i++){
acum+=i;
}
return acum;
}
else{
c=0;
for(int i=0;i<s.size();i+=2){
if(s[i]>0){
int shoes=s[i],id;
for(int j=i+1;j<s.size();j++){
if(s[j]==shoes*(-1)){
id=j;
break;
}
}
for(int j=id;j>i;j--){
swap(s[j],s[j-1]);
c++;
}
}
else{
if(s[i+1]!=s[i]*(-1)){
int id,shoes=s[i]*(-1);
for(int j=i+1;j<s.size();j++){
if(s[j]==shoes){
id=j;
break;
}
}
for(int j=id;j>i+1;j--){
swap(s[j],s[j-1]);
c++;
}
}
}
}
return c;}*/
return c;
}
컴파일 시 표준 에러 (stderr) 메시지
shoes.cpp: In function 'std::vector<int> mergesort(std::vector<int>)':
shoes.cpp:19:17: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for(int i=mi;i<s.size();i++){
~^~~~~~~~~
shoes.cpp:36:7: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
if(t==s.size()){
~^~~~~~~~~~
shoes.cpp:38:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for(int i=0;i<a.size();i++){
~^~~~~~~~~
shoes.cpp:46:9: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
if(i==a.size() and j==b.size()) break;
~^~~~~~~~~~
shoes.cpp:46:25: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
if(i==a.size() and j==b.size()) break;
~^~~~~~~~~~
shoes.cpp:47:9: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
if(i==a.size() and j<b.size()){
~^~~~~~~~~~
shoes.cpp:47:25: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
if(i==a.size() and j<b.size()){
~^~~~~~~~~
shoes.cpp:51:9: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
if(j==b.size() and i<a.size()){
~^~~~~~~~~~
shoes.cpp:51:25: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
if(j==b.size() and i<a.size()){
~^~~~~~~~~
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |