���� ���ǰ���� koi4u���ǰ���� ������ �˴ϴ�. ���� ���� �ٶ��ϴ�.
"; print "
���� : o - Accepted, x - Wrong Answer, s - signal out(runtime error), t - Time Limit Exceeded


"; print "�� ���

"; print "
Gold Medal - �� ���̶� ������ �������� 10%, Silver Medal - �������� 20%, Bronze Medal - �������� 30%


"; print "
[ Winner!! ] (747pts)

: gs12117

"; print "



Gold Medal List!! (cutline 715pts)


: gs12117, gs12065

"; print "



Silver Medal List (cutline 467pts)

: mufflin, k5888200, gs12120

"; print "



Bronze Medal List (cutline 250pts)


: gs12059, ainta, sunghyen, nextpeace


"; print "��ü ����ǥ

"; $dir="/var/www/bbs/moi/14th/"; $pnum = 3; $files1 = scandir($dir); $number=1; $iuser = array(); $ip1 = array(); $ip2 = array(); $ip3 = array(); $ip4 = array(); $ip5 = array(); $isc = array(); $rank = array(); for( $i=0 ; $files1[$i] != NULL ; $i++ ) { if(/*$files1[$i]!="admin" && */$files1[$i]!="." && $files1[$i]!=".." && is_dir($files1[$i])==true) { $fp = fopen("./$files1[$i].tm", "r"); // if($fp==NULL) print "can't open!!"; $buffer = fread($fp, filesize("./$files1[$i].tm")); $solve = explode("\n", $buffer); $ftime = $solve[0]; //print "./$files1[$i].tm($ftime,$fp)[".time()."]
"; $number++; $score=0; if( $number%2 == 1 ) $bcolor = "ffffff"; else $bcolor = "ececff"; $id_name=""; for($ttt=0;$ttt<= strlen($files1[$i]) ;$ttt++) if(1<=$ttt&&$ttt<=-2) $id_name.= "*"; else $id_name.=SUBSTR($files1[$i],$ttt,1); $iuser[$number] = $id_name; $ttt = 15000-(time()-$ftime); $hh=($ttt-($ttt%3600))/3600; $mm=(($ttt-$hh*3600)-(($ttt-$hh*3600)%60))/60; $ss = intval(3600-(time()-$ftime))%60; if(time()-$ftime <= 15000) $iuser[$number] = "".$iuser[$number]."(".$hh."h".$mm."m".$ss."s)"; for( $j=1 ; $j <= $pnum ; $j++ ) { $sz = 20; $prob_result = $dir.$files1[$i].'/'.$files1[$i].'.res'.$j; if(file_exists($prob_result)==true) { $score+=($j*0.001); $fp = fopen($prob_result, "r"); $str = fgets($fp, filesize($prob_result)+1); $resres = ""; for( $k=0; $k <= strlen($str) ; $k++ ) if(SUBSTR($str, $k, 1)== "o"){ $resres.=''.SUBSTR($str, $k, 1).''; if($j==1) $score += 25+($j*0.001); else if($j==2) $score += 17.5+($j*0.001); else if($j==3) $score += 40+($j*0.001); else if($j==4) $score += 21.43+($j*0.001); else if($j==5) $score += 12+($j*0.001); } else if(SUBSTR($str, $k, 1)=="x") $resres.=''.SUBSTR($str, $k, 1).''; else if(SUBSTR($str, $k, 1)=="t") $resres.=''.SUBSTR($str, $k, 1).''; else if(SUBSTR($str, $k, 1)=="s") $resres.=''.SUBSTR($str, $k, 1).''; } else $resres='Not submited!!'; if($j==1) $ip1[$number] = $resres; else if($j==2) $ip2[$number] = $resres; else if($j==3) $ip3[$number] = $resres; else if($j==4) $ip4[$number] = $resres; else $ip5[$number] = $resres; } $isc[$number]=$score; } } for($i=2;$i<=$number;$i++) for($j=2;$j<=$number;$j++) if( $isc[$i] < $isc[$j] ) $rank[$i]++; for($i=2;$i<=$number-1;$i++) for($j=$i+1;$j<=$number;$j++) if($isc[$i] < $isc[$j]) { $tttt=$iuser[$i];$iuser[$i]=$iuser[$j];$iuser[$j]=$tttt; $tttt=$ip1[$i];$ip1[$i]=$ip1[$j];$ip1[$j]=$tttt; $tttt=$ip2[$i];$ip2[$i]=$ip2[$j];$ip2[$j]=$tttt; $tttt=$ip3[$i];$ip3[$i]=$ip3[$j];$ip3[$j]=$tttt; $tttt=$ip4[$i];$ip4[$i]=$ip4[$j];$ip4[$j]=$tttt; $tttt=$ip5[$i];$ip5[$i]=$ip5[$j];$ip5[$j]=$tttt; $ttttt=$isc[$i];$isc[$i]=$isc[$j];$isc[$j]=$ttttt; $ttttt=$rank[$i];$rank[$i]=$rank[$j];$rank[$j]=$ttttt; } print 'Result for All Participant (������ ��쿡 3, 2, 1�� ������ ���� ������ �켱������ �������ϴ�.)
'; for($i=2; $i <= $number ; $i++ ) { if( $i%2 == 1 ) $bcolor = "ffffff"; else $bcolor = "ececff"; print ' '; print ' '; print ' '; print ' '; print ' '; print ''; print ""; } print "
Rank user Strange (250) Hope (350) Bracket (400)
'.($rank[$i]+1).''.$iuser[$i].''.$ip1[$i].''.$ip2[$i].''.$ip3[$i].''.(floor($isc[$i])).'

"; print "�̹� ��ȸ�� �����Ͻ� ".($number)."�� ��� �����ϼ̽��ϴ�!! ���� �濬�� ����ϼ���~
"; print "������ ��ȸ�� �ȴٸ� ����ǰ�� �غ��� ^^;"; print "


Here is some User's perfact Solution!!


1. Strange (by k5888200)"; print '
  1. #include <stdio.h>  
  2.   
  3.   
  4. long long n;  
  5. long long e2[100],e3[100],N2,N3;  
  6. int count;  
  7.   
  8. void f(long long N, int two, int three){  
  9.     if(N==0){  
  10.         count++;  
  11.         return ;  
  12.     }  
  13.   
  14.     while(N%2==0) N/=2, two--;  
  15.     while(N%3==0) N/=3, three--;  
  16.   
  17.     if(three>0) return ;  
  18.   
  19.     int i,j;  
  20.     for(i=two;i>=0;i--) for(j=0;j<=N3;j++){  
  21.         if(N-e2[i]*e3[j]>=0) f(N-e2[i]*e3[j],i-1,j+1);  
  22.         else break;  
  23.     }  
  24. }  
  25.   
  26. int main(){  
  27.     scanf("%lld",&n);  
  28.   
  29.     while(n%2==0) n/=2;  
  30.     while(n%3==0) n/=3;  
  31.   
  32.     int i;  
  33.     e2[0]=e3[0]=1;  
  34.     for(i=1;e2[i-1]<=n;i++) e2[i]=e2[i-1]*2; N2=i-1;  
  35.     for(i=1;e3[i-1]<=n;i++) e3[i]=e3[i-1]*3; N3=i-1;  
  36.   
  37.     f(n,N2,0);  
  38.     if(n==1) count=0;  
  39.     printf("%d",count);  
  40.   
  41. }  

'; print "


2. Hope (by gs12065) "; print '
  1. #include <cstdio>  
  2. #include <algorithm>  
  3.   
  4. #define M_MAX 3020  
  5. #define N_MAX 110  
  6.   
  7. struct state {  
  8.     bool isLine;  
  9.     int num;  
  10. } list[M_MAX*2], t;  
  11.   
  12. int n, m, map[M_MAX][M_MAX], nList[M_MAX][N_MAX], nFull[M_MAX], rNum[M_MAX], gList[M_MAX][N_MAX], gFull[M_MAX], rGroup[M_MAX], minNum, selected[M_MAX];  
  13. bool chk[M_MAX][M_MAX];  
  14.   
  15. int getScore(state &x){  
  16.     return x.isLine?rNum[x.num]:rGroup[x.num];  
  17. }  
  18.   
  19. bool compare(state &x, state &y){  
  20.     return getScore(x) < getScore(y);  
  21. }  
  22.   
  23. void process(state &x, bool recur){  
  24.     int i, d;  
  25.     bool find=0;  
  26.     if(x.isLine){  
  27.         for(i=0; i<nFull[x.num]; i++){  
  28.             //printf("_%d %d\n", x.num, nList[x.num][i]);  
  29.             if(chk[x.num][nList[x.num][i]]){  
  30.                 chk[x.num][nList[x.num][i]] = 0;  
  31.                 rGroup[nList[x.num][i]]--;  
  32.                 if(!find) {  
  33.                     selected[nList[x.num][i]] = x.num;  
  34.                     d = nList[x.num][i];  
  35.                     rGroup[d] = n+1;  
  36.                     find = 1;  
  37.                 }  
  38.             }  
  39.         }  
  40.         for(i=0; i<gFull[d]; i++)  
  41.             if(chk[gList[d][i]][d])  
  42.                 chk[gList[d][i]][d] = 0;  
  43.         rNum[x.num] = n+1;  
  44.     } else {  
  45.         for(i=0; i<gFull[x.num]; i++){  
  46.             if(chk[gList[x.num][i]][x.num]){  
  47.                 chk[gList[x.num][i]][x.num] = 0;  
  48.                 rNum[gList[x.num][i]]--;  
  49.                 if(!find) {  
  50.                     selected[x.num] = gList[x.num][i];  
  51.                     d = gList[x.num][i];  
  52.                     rNum[d] = n+1;  
  53.                     find = 1;  
  54.                 }  
  55.             }  
  56.         }  
  57.         for(i=0; i<nFull[d]; i++)  
  58.             if(chk[d][nList[d][i]])  
  59.                 chk[d][nList[d][i]] = 0;  
  60.         rGroup[x.num] = n+1;  
  61.     }  
  62. }  
  63.   
  64. void getMin(){  
  65.     minNum = 0;  
  66.   
  67.     int i;  
  68.     for(i=1; i<2*m; i++)  
  69.         if(getScore(list[i]) < getScore(list[minNum]))  
  70.             minNum = i;  
  71. }  
  72.   
  73. int main(){  
  74.     scanf("%d%d", &m, &n);  
  75.   
  76.     int i, j, t;  
  77.     for(i=1; i<=m; i++){  
  78.         for(j=1; j<=n; j++){  
  79.             scanf("%d", &t);  
  80.             if(!map[t][i]){  
  81.                 map[t][i] = j;  
  82.                 chk[t][i] = 1;  
  83.                 nList[t][nFull[t]++] = i;  
  84.                 gList[i][gFull[i]++] = t;  
  85.             }  
  86.         }  
  87.     }  
  88.   
  89.     for(i=0; i<m; i++){  
  90.         rGroup[i+1] = gFull[i+1];  
  91.         list[i*2].isLine = 0;  
  92.         list[i*2].num = i+1;  
  93.         rNum[i+1] = nFull[i+1];  
  94.         list[i*2+1].isLine = 1;  
  95.         list[i*2+1].num = i+1;  
  96.     }  
  97.   
  98.     getMin();  
  99.     while(getScore(list[minNum]) <= n){  
  100.         process(list[minNum], 0);  
  101.         getMin();  
  102.     }  
  103.   
  104.     for(i=1; i<=m; i++)  
  105.         printf("%d %d\n", selected[i], map[selected[i]][i]);  
  106.   
  107.     return 0;  
  108. }  

'; print "


3. Bracket (by gs12117)
"; print'
  1. #include<stdio.h>  
  2. int n;  
  3. int code[1010];  
  4. int codeb[2010];  
  5. char str[2010];  
  6. int f(int a,int b){  
  7.     if(a==b)return 1;  
  8.     int i,j=0,k=0;  
  9.     for(i=a;i<b;i++){  
  10.         j+=codeb[i];  
  11.         k+=codeb[i]*i;  
  12.     }  
  13.     if(j!=(b-a)/2)return 0;  
  14.     if(k!=j*(a+b)/2)return 0;  
  15.     for(i=a+1;i<=(a+b)/2;i++){  
  16.         if(codeb[i]){  
  17.             codeb[i]--;  
  18.             if(f(a+1,2*i-a-1)==1&&f(2*i-a,b)==1){  
  19.                 str[a]='[';  
  20.                 str[2*i-a-1]=']';  
  21.                 codeb[i]++;  
  22.                 return 1;  
  23.             }  
  24.             codeb[i]++;  
  25.         }  
  26.     }  
  27.     return 0;  
  28. }  
  29. int main(){  
  30.     int i,j;  
  31.     scanf("%d",&n);  
  32.     for(i=0;i<n;i++){  
  33.         scanf("%d",&code[i]);  
  34.         codeb[code[i]]++;  
  35.     }  
  36.     if(f(0,2*n)==0)printf("ERR");  
  37.     printf("%s",str);  
  38. }  

'; print "
�� �ع��� �м��Ͽ� ������ �����սô�. ���� ��ϵǸ� �����ϼ���!!"; print ''; ?>