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


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


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

: gs11008

"; print "



Gold Medal List!! (over 420pts)


: gs11008, gs12065, dijkstra, teram, gs10107, gs12059, gs12117

"; print "



Silver Medal List (over 308pts)

: issac, xxxxx, kk1401, seotos, gs12122, ainta, ryanchl, gs11135, ajou709

"; print "



Bronze Medal List (over 218pts)


: gs12047, jyj0312, gs12120, gs11098, gs11028, gs11117, gs11018, commaster0, gs12116, gs11103, woo960131, gs12115, mufflin, gs10102, gs12019


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

"; $dir="/var/www/bbs/moi/11st/"; $pnum = 5; $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 = 18600-(time()-$ftime); $hh=($ttt-($ttt%3600))/3600; $mm=(($ttt-$hh*3600)-(($ttt-$hh*3600)%60))/60; $ss = intval($ttt-(time()-$ftime))%60; if(time()-$ftime <= 15000) $iuser[$number] = "".$iuser[$number]."(".$hh."h".$mm."m)"; 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 += 16+($j*0.001); else if($j==2) $score += 18+($j*0.001); else if($j==3) $score += 18.2+($j*0.001); else if($j==4) $score += 22+($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 (������ ��쿡 5, 4, 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 ''; print ""; } print "
Rank user Faucet (160) Rope Cutting (180) Virus (200) Polygon (220) Festival (240) Score
'.($rank[$i]+1).''.$iuser[$i].''.$ip1[$i].''.$ip2[$i].''.$ip3[$i].''.$ip4[$i].''.$ip5[$i].''.(floor($isc[$i])).'

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


Here is some User's perfact Solution!!


1. Faucet (by dijkstra)"; print '
  1. #include<stdio.h>  
  2. main()      // by dijkstra  
  3. {  
  4.     int i,n;  
  5.     scanf("%d",&n);  
  6.     for(i=1;i*i<=n;i++);  
  7.     printf("%d",i-1);  
  8. }  

'; print "


2. Rope cutting (by gs12065) "; print '
  1. #include <stdio.h>  
  2. #include <algorithm>  
  3.   
  4. #define MAX 123456789       // by gs12065 (O(n^3) DP MAX n is 50)  
  5.   
  6. int length, n, pos[55], dp[55][55];  
  7.   
  8. int main(){  
  9.     scanf("%d%d", &length, &n);     
  10.   
  11.     int i, j, k;  
  12.     pos[0] = 0;  
  13.     for(i=1; i<=n; i++) scanf("%d", &pos[i]);  
  14.     pos[n+1] = length;  
  15.   
  16.     std::sort(pos, pos+n+2);  
  17.   
  18.     for(i=2; i<=n+1; i++){  
  19.         for(j=0; j+i<=n+1; j++){  
  20.             dp[j][j+i] = MAX;  
  21.             for(k=1; k<i; k++){  
  22.                dp[j][j+i] =   
  23.                   std::min(dp[j][j+i], pos[j+i]-pos[j]+dp[j][j+k]+dp[j+k][j+i]);  
  24.             }  
  25.         }  
  26.     }  
  27.   
  28.     printf("%d\n", dp[0][n+1]);  
  29.   
  30.     return 0;  
  31. }  

'; print "


Here is another solution (by gs12117) "; print '
  1. #include<stdio.h>  
  2. int line[1010];  
  3. int ce[1010][1010];     // gs12117 (O(L^2) Memoization(DP) MAX L is 1000)  
  4. int cut(int s,int e){         
  5.     if(ce[s][e]>0)return ce[s][e];  
  6.     int i,energy=999999999;  
  7.     for(i=s+1;i<e;i++){  
  8.         if(line[i]==1){  
  9.             if(energy>cut(s,i)+cut(i,e)){  
  10.                 energy=cut(s,i)+cut(i,e);  
  11.             }  
  12.         }  
  13.     }  
  14.     if(energy==999999999)energy=0;  
  15.     ce[s][e]=energy+e-s;  
  16.     return ce[s][e];  
  17. }  
  18. int main(){  
  19.     int a,b,c,i;  
  20.     scanf("%d%d",&a,&b);  
  21.     for(i=0;i<b;i++){  
  22.         scanf("%d",&c);  
  23.         line[c]=1;  
  24.     }  
  25.     printf("%d",cut(0,a)-a);  
  26. }  

'; print "


3. Virus (by k5888200)
"; print'
  1. #include <stdio.h>  
  2. #include <math.h>  
  3. #include <algorithm>  
  4. #define MIN(x,y) ((x)<(y)?(x):(y))  
  5.   
  6. int n;  
  7. double ANS;     // by k5888200 (Divide & Conquer Solution)  
  8.   
  9. struct X{  
  10.     double x,y;  
  11. }a[10005];  
  12.   
  13. bool cmp_x(X aa, X bb){  
  14.     if(aa.x!=bb.x) return aa.x<bb.x;  
  15.     return aa.y<bb.y;  
  16. }  
  17. bool cmp_y(X aa, X bb){  
  18.     if(aa.y!=bb.y) return aa.y<bb.y;  
  19.     return aa.x<bb.x;  
  20. }  
  21.   
  22. double len(X aa, X bb){return sqrt((aa.x-bb.x)*(aa.x-bb.x)+(aa.y-bb.y)*(aa.y-bb.y));}  
  23.   
  24.   
  25. double f(int left, int right){  
  26.     if(left==right) return ANS;  
  27.     if(left+1==right) return len(a[left],a[right]);  
  28.   
  29.     double min1, min2, min, Min;  
  30.     int mid;  
  31.     mid=(left+right)>>1;  
  32.   
  33.     min1=f(left,mid);  
  34.     printf("",min1);  
  35.     min2=f(mid+1,right);  
  36.     ANS=min=Min=MIN(min1,min2);  
  37.   
  38.     int i,j,k,l;  
  39.   
  40.     for(i=mid;i>left;i--) if(a[mid].x-min>a[i].x) break; left=i+1;  
  41.     for(i=mid;i<=right;i++) if(a[i].x>a[mid].x+min) break; right=i-1;  
  42.   
  43.   
  44.     std::sort(a+left,a+right+1,cmp_y);  
  45.   
  46.     for(i=j=left;j<=right;j++){  
  47.         while(a[j+1].y<a[i].y+min && j+1<=right) j++;  
  48.         for(k=i;k<=j;k++){  
  49.             for(l=k+1;l<=j;l++){  
  50.                 Min=MIN(Min,len(a[k],a[l]));  
  51.             }  
  52.         }  
  53.   
  54.     }  
  55.   
  56.     std::sort(a+left,a+right+1,cmp_x);  
  57.   
  58.     return Min;  
  59. }  
  60. int main(){  
  61.     int i;  
  62.     scanf("%d",&n);  
  63.     for(i=1;i<=n;i++) scanf("%lf%lf",&a[i].x,&a[i].y);  
  64.     std::sort(a+1,a+1+n,cmp_x);  
  65.     ANS=len(a[1],a[2]);  
  66.     printf("%.2lf",f(1,n));  
  67. }  

'; print "


4. Polygon (by gs11008)
"; print'
  1. #include<stdio.h>  
  2. #include<memory.h>  
  3. int pre,n,qqq[510][2],x[510],chk[510],dap=1<<30,lll[510],z;  
  4. struct data{  
  5.     int a,b;                // by gs11008 (using IndexTree) almost Perfect  
  6. } indextree[1<<12];  
  7.   
  8. int i,j,maxx;  
  9.   
  10. int f(int a,int b){  
  11.     int M=0;  
  12.     while(a<b){  
  13.         if(~b&1){  
  14.             if(M<indextree[b].b)  
  15.                 M=indextree[b].b;  
  16.             b--;  
  17.         }  
  18.         a>>=1,b>>=1;  
  19.     }  
  20.     if(a==b&&M<indextree[a].b)M=indextree[a].b;  
  21.     return M;  
  22. }  
  23. int main(){  
  24.     scanf("%d",&n);  
  25.     for(i=1;i<=n;i++)scanf("%d%d",qqq[i],qqq[i]+1);  
  26.     pre=x[0]=chk[1]=1;  
  27.     for(i=1;i<n;i++){  
  28.         if(chk[qqq[pre][0]]==0){  
  29.             chk[qqq[pre][0]]=1;  
  30.             x[i]=qqq[pre][0];  
  31.             pre=qqq[pre][0];  
  32.         }  
  33.         else if(chk[qqq[pre][1]]==0){  
  34.             chk[qqq[pre][1]]=1;  
  35.             x[i]=qqq[pre][1];  
  36.             pre=qqq[pre][1];  
  37.         }  
  38.         else break;  
  39.     }  
  40.     if(i!=n || (qqq[x[n-1]][0]!=1 && qqq[x[n-1]][1]!=1))return printf("-1");  
  41.   
  42.     for(z=0;z<n;z++){  
  43.         memset(indextree,0,sizeof(indextree));  
  44.         for(i=0;i<n;i++)  
  45.             lll[i]=x[(i+z)%n];  
  46.         int p;  
  47.         for(p=1;p<=n;p*=2);  
  48.         for(i=0;i<n;i++){  
  49.             int t=p+lll[i]-1;  
  50.             indextree[t].a=1;  
  51.             indextree[t].b=f(p,t-1)+1;  
  52.             for(j=t;j>1;j>>=1){  
  53.                 if(indextree[j>>1].a==0)indextree[j>>1]=indextree[j];  
  54.                 else if(indextree[j>>1].b<indextree[j].b)indextree[j>>1]=indextree[j];  
  55.             }  
  56.         }  
  57.         if(n-indextree[1].b<dap)dap=n-indextree[1].b;  
  58.     }  
  59.     for(i=0;i<n/2;i++){  
  60.         int t=x[i];  
  61.         x[i]=x[n-i-1];  
  62.         x[n-i-1]=t;  
  63.     }  
  64.     for(z=0;z<n;z++){  
  65.         memset(indextree,0,sizeof(indextree));  
  66.         for(i=0;i<n;i++)  
  67.             lll[i]=x[(i+z)%n];  
  68.         int p;  
  69.         for(p=1;p<=n;p*=2);  
  70.         for(i=0;i<n;i++){  
  71.             int t=p+lll[i]-1;  
  72.             indextree[t].a=1;  
  73.             indextree[t].b=f(p,t-1)+1;  
  74.             for(j=t;j>1;j>>=1){  
  75.                 if(indextree[j>>1].a==0)indextree[j>>1]=indextree[j];  
  76.                 else if(indextree[j>>1].b<indextree[j].b)indextree[j>>1]=indextree[j];  
  77.             }  
  78.         }  
  79.         if(n-indextree[1].b<dap)dap=n-indextree[1].b;  
  80.     }  
  81.     printf("%d",dap);  
  82. }  

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