1 2 3 4 5 6 7 | import System.IO quicksort [] = [] quicksort (x:xs) = quicksort [y | y <- xs, y < x] ++ [x] ++ quicksort [y | y <- xs, y >= x] main = print . quicksort =<< getLine |
aW1wb3J0IFN5c3RlbS5JTwoKcXVpY2tzb3J0IFtdICAgICA9IFtdCnF1aWNrc29ydCAoeDp4cykgPSBxdWlja3NvcnQgW3kgfCB5IDwtIHhzLCB5IDwgeF0gKysgW3hdICsrIHF1aWNrc29ydCBbeSB8IHkgPC0geHMsIHkgPj0geF0KCm1haW4gPSBwcmludCAuIHF1aWNrc29ydCA9PDwgZ2V0TGluZQo=
-
upload with new input
-
result: Success time: 0.01s memory: 3600 kB returned value: 0
#include<stdio.h> #include<stdlib.h> #include<math.h> #ifndef bool #define bool int #endif #ifndef true #define true 1 #endif #ifndef false #define false 0 #endif struct state { int value;//最小時間を記憶 bool infinity_p;//無限大の時間を記憶 bool solved_p;/*状態としてそこに至る最小時間を計算できるかどうかを持つ できていればtrue そうでなければfalse*/ bool oldK_p;//自分の前の状態が i==k であったか bool oldJ_p;//自分の前の状態が i==j であったか }; struct states { struct state *stateArray; int *x,*r,n; }; void initialize(struct states *ss); void inputData(struct states *ss); void printState(struct states *ss); void print1State(struct states *ss,int j,int k,int i); void print1StateBefore(struct states *ss,int j,int k,int i); struct state *getStateArrayPtr(struct states *ss,int j,int k,int ijk_p); void turn(struct states *ss,int k); void turn0(struct states *ss,int j,int k); void turn1(struct states *ss,int j,int k); void printSolution(struct states *ss); void finalize(struct states *ss); int main(int argc,char *argv[]) { struct states ss; int k; initialize(&ss);//配列の初期化 inputData(&ss);//配列の用意とx,rの値の入力 printState(&ss);//表出力 //for(k=ss.n+1; k>=1; k--) // { // turn(&ss,k); // printState(&ss); // } printSolution(&ss); finalize(&ss); return 0; } void initialize(struct states *ss) { ss->x=NULL; ss->r=NULL; ss->stateArray=NULL; } void inputData(struct states *ss) { int i,j,k,n; scanf("%d",&ss->n); n=ss->n; ss->x=(int *)malloc(((ss->n)+1)*sizeof(int)); ss->r=(int *)malloc(((ss->n)+1)*sizeof(int)); ss->stateArray=(struct state *)malloc(((ss->n)+2)*2*sizeof(struct state)); ss->x[0]=0; ss->r[0]=0; for(i=1; i<=ss->n; i++)//x,rを入力 { scanf("%d",&ss->x[i]); scanf("%d",&ss->r[i]); } for(j=0; j<n; j++)//stateArrayを初期化 { for(i=0; i<=1; i++) { for(k=1; k<=n+1; k++) { getStateArrayPtr(ss,j,k,i)->value=0; getStateArrayPtr(ss,j,k,i)->infinity_p=false; getStateArrayPtr(ss,j,k,i)->solved_p=false; getStateArrayPtr(ss,j,k,i)->oldK_p=false; getStateArrayPtr(ss,j,k,i)->oldJ_p=false; } //printf("\n"); } } for(j=0; j<=n; j++)//stateArrayの境界値設定 { getStateArrayPtr(ss,j,n+1,1)->infinity_p=true; getStateArrayPtr(ss,j,n+1,1)->solved_p=true; } for(k=1; k<=n+1; k++) { getStateArrayPtr(ss,0,k,0)->infinity_p=true; getStateArrayPtr(ss,0,k,0)->solved_p=true; } /*stateArrayの初期設定*/ getStateArrayPtr(ss,1,n+1,0)->value=ss->r[1]; getStateArrayPtr(ss,1,n+1,0)->solved_p=true; getStateArrayPtr(ss,0,n+1,1)->value=ss->r[n]; getStateArrayPtr(ss,0,n+1,1)->solved_p=true; return; } //表出力関数 void printState(struct states *ss) { int i,j,k,n; n=ss->n; /*ここと*/ for(j=0; j<n; j++) { for(i=0; i<=1; i++) { for(k=1; k<=n+1; k++) { if(false==(getStateArrayPtr(ss,j,k,i)->solved_p)) printf(" ,,"); else printf("**"); } printf("\n"); } } printf("\n"); printf("."); for(k=1; k<=(n+1); k++) printf(",k=%d,before",k); printf("\n"); for(j=0; j<=n; j++) { for(i=0; i<=1; i++) { printf("j=%d",j); if(0==i)printf(",i=j"); else printf(",i=k"); for(k=1; k<=n+1; k++) print1State(ss,j,k,i); printf("\n"); } } printf("\n\n\n"); } void print1State(struct states *ss,int j,int k,int i) { /*ここ*/ int a,b,c,n; a=j; b=k; c=i; n=ss->n; if(j==0&&k==1) { for(j=0; j<n; j++)//stateArrayを初期化 { for(i=0; i<=1; i++) { for(k=1; k<=n+1; k++) { if(false==(getStateArrayPtr(ss,j,k,i)->solved_p)) printf(" ,,"); else printf("**"); } printf("\n"); } } printf("\n"); j=a; k=b; i=c; } printf(" %d,%d,%d ",j,k,i); if(false==(getStateArrayPtr(ss,j,k,i)->solved_p)) printf(",,"); else if(true==(getStateArrayPtr(ss,j,k,i)->infinity_p)) printf(",inf,"); else{ printf(",%d",(getStateArrayPtr(ss,j,k,i)->value)); print1StateBefore(ss,j,k,i);//まだいらない } return; } void print1StateBefore(struct states *ss,int j,int k,int i) {//ひとつの状態の前の状態がどれであるか書く if(true==getStateArrayPtr(ss,j,k,i)->oldJ_p) { if(true==getStateArrayPtr(ss,j,k,i)->oldK_p) printf(",j=jk"); else printf(",i=j"); } else { if(true==getStateArrayPtr(ss,j,k,i)->oldK_p) printf(",i=k"); else printf(","); } return; } struct state *getStateArrayPtr(struct states *ss,int j,int k,int ijk_p) { //状態のポインターを返す。ijk_p: 0 if(i==j) else 1 if(i==k) return((ss->stateArray)+j*((ss->n)+2)*2+k*2+ijk_p); } //turn void turn(struct states *ss,int k) {//DP状態のkに対する更新 int j,nn; nn=ss->n; for(j=0; j<k; j++) { if(j<k){ turn0(ss,j,k); turn1(ss,j,k); } } return; } void turn0(struct states *ss,int j,int k) { } void turn1(struct states *ss,int j,int k) { } void printSolution(struct states *ss) { } void finalize(struct states *ss) { }"#.<>cddehiilnostu"



