Submission #153608

#TimeUsernameProblemLanguageResultExecution timeMemory
153608DanerZeinArranging Shoes (IOI19_shoes)C++14
10 / 100
2 ms400 KiB
#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]) and s[0]>0)
      c++;
    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;
}

Compilation message (stderr)

shoes.cpp: In function 'std::vector<int> mergesort(std::vector<int>)':
shoes.cpp:21:17: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for(int i=mi;i<s.size();i++){
                ~^~~~~~~~~
shoes.cpp:38:7: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   if(t==s.size()){
      ~^~~~~~~~~~
shoes.cpp:40:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i=0;i<a.size();i++){
                 ~^~~~~~~~~
shoes.cpp:48:9: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     if(i==a.size() and j==b.size()) break;
        ~^~~~~~~~~~
shoes.cpp:48:25: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     if(i==a.size() and j==b.size()) break;
                        ~^~~~~~~~~~
shoes.cpp:49:9: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     if(i==a.size() and j<b.size()){
        ~^~~~~~~~~~
shoes.cpp:49:25: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     if(i==a.size() and j<b.size()){
                        ~^~~~~~~~~
shoes.cpp:53:9: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     if(j==b.size() and i<a.size()){
        ~^~~~~~~~~~
shoes.cpp:53:25: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     if(j==b.size() and i<a.size()){
                        ~^~~~~~~~~
#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...