Untitled

Run Settings
LanguageC
Language Version
Run Command
#include <stdio.h> #include <limits.h> long arr[41]; int N; int ans; int calc(); int up(int start); int down(int pos); void swap(int a, int b); void show(); int main(void) { int T; scanf("%d", &T); //printf("T: %d\n", T); for(int i=0; i<T; i++){ scanf("%d", &N); int j; for(j=0; j<N; j++){ scanf("%ld", &arr[j]); } arr[j] = LONG_MAX; /* printf("arr\n"); for(int a=0; a<=N; a++){ //printf(" %d ", arr[a]); } printf("\n"); */ ans = calc(); printf("Case #%d: %d\n",i+1, ans); } return 0; } int calc(){ int pos, tar; int ans=0; int start=0; while((pos = up(start))){ if((tar=down(pos))){ swap(pos-1, tar-1); ans+=tar-pos; //printf("change %dth: %ld <> %dth: %ld, ans: %d\n", pos, arr[pos-1], tar, arr[tar-1], ans); //show(); } } return ans; } void show(){ printf("> "); for(int i=0; i<N; i++){ printf(" %ld ", arr[i]); } printf("\n\n"); } int up(int start){ long min = arr[0]; for(int i=1; i<N; i++){ if(arr[i] < min){ return i; }else { min = arr[i]; } } return 0; } int down(int pos){ long max = arr[pos]; for(int i=pos+1; i<=N; i++){ if(max <= arr[i]){ return i; }else { max = arr[i]; } } return 0; } void swap(int a, int b){ long temp = arr[a]; arr[a] = arr[b]; arr[b] = temp; }
Editor Settings
Theme
Key bindings
Full width
Lines