제출 #253517

#제출 시각아이디문제언어결과실행 시간메모리
253517BadrangiikhArranging Shoes (IOI19_shoes)C++14
30 / 100
33 ms1920 KiB
#include<bits/stdc++.h>
#include <deque> 
#include <cmath>
using namespace std;
 
#define ll long long 
 
/*freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);*/

long long m , s1 , s2 , y ;

long long count_swaps ( vector < int > s ) {
    long long n = s . size ( ) ;
    if ( n == 2 ) {
        if ( s [ 0 ] < s [ 1 ] ) return 0 ;
        else return 1 ;
    }
    long long x = 0 ;
    for ( long long i = 1 ; i < n ; i ++ ) {
        if ( abs ( s [ i ] ) == abs ( s [ 0 ] ) ) x ++ ;
    }
    if ( x + 1 == n ) {
        long long y = 0 ;
        long long z = 0 ;
        for ( long long i = 0 ; i < n ; i ++ ) {
            if ( s [ i ] < 0 ) {
                z += abs ( i - y ) ;
                y += 2 ;
            } 
        }
        return z ;
    }
    x = 0 ;
  	y = 0 ;
  	n = s . size ( ) / 2 ;
  	m = s . size ( ) ;
    for ( int l = 1 ; l <= n ; l ++ ) {
      	for ( int i = 0 ; i < m ; i ++ ) {
          	if ( s [ i ] < 0 ) {
              	for ( int j = 0 ; j < m ; j ++ ) {
                	if ( s [ j ] == ( -1 ) * s [ i ] ) {
                      	s1 = i ;
                      	s2 = j ;
                      	break ;
                    }
              	}
              	break ;
            }
        }
      	if ( s1 < s2 ) {
          	x += ( s1 + s2 - 1 ) ;
        }
      	else {
          	x += ( s1 + s2 ) ;
        }
      	y = 0 ;
      	for ( int i = 0 ; i < m ; i ++ ) {
          	if ( i == s1 || i == s2 ) continue ;
          	s [ y ] = s [ i ] ;
        }	
      	m -= 2 ;
    }
    return x ;
}
#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...