´ÙÀ½¿¡ ÁغñÁßÀÎ ¸ðÀÇ°í»ç¿¡µµ Âü°¡ÇØ Áֽñ⠹ٶø´Ï´Ù.
"; 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 '
#include<stdio.h>
main()  	// by dijkstra
{
    int i,n;
    scanf("%d",&n);
    for(i=1;i*i<=n;i++);
    printf("%d",i-1);
}


'; print "


2. Rope cutting (by gs12065) "; print '

#include <stdio.h>
#include <algorithm>

#define MAX 123456789		// by gs12065 (O(n^3) DP MAX n is 50)

int length, n, pos[55], dp[55][55];

int main(){
	scanf("%d%d", &length, &n);   

	int i, j, k;
	pos[0] = 0;
	for(i=1; i<=n; i++) scanf("%d", &pos[i]);
	pos[n+1] = length;

	std::sort(pos, pos+n+2);

	for(i=2; i<=n+1; i++){
		for(j=0; j+i<=n+1; j++){
			dp[j][j+i] = MAX;
			for(k=1; k<i; k++){
			   dp[j][j+i] = 
			      std::min(dp[j][j+i], pos[j+i]-pos[j]+dp[j][j+k]+dp[j+k][j+i]);
			}
		}
	}

	printf("%d\n", dp[0][n+1]);

	return 0;
}


'; print "


Here is another solution (by gs12117) "; print '

#include<stdio.h>
int line[1010];
int ce[1010][1010];		// gs12117 (O(L^2) Memoization(DP) MAX L is 1000)
int cut(int s,int e){		
	if(ce[s][e]>0)return ce[s][e];
	int i,energy=999999999;
	for(i=s+1;i<e;i++){
		if(line[i]==1){
			if(energy>cut(s,i)+cut(i,e)){
				energy=cut(s,i)+cut(i,e);
			}
		}
	}
	if(energy==999999999)energy=0;
	ce[s][e]=energy+e-s;
	return ce[s][e];
}
int main(){
	int a,b,c,i;
	scanf("%d%d",&a,&b);
	for(i=0;i<b;i++){
		scanf("%d",&c);
		line[c]=1;
	}
	printf("%d",cut(0,a)-a);
}

'; print "


3. Virus (by k5888200)
"; print'
#include <stdio.h>
#include <math.h>
#include <algorithm>
#define MIN(x,y) ((x)<(y)?(x):(y))

int n;
double ANS;		// by k5888200 (Divide & Conquer Solution)

struct X{
    double x,y;
}a[10005];

bool cmp_x(X aa, X bb){
    if(aa.x!=bb.x) return aa.x<bb.x;
    return aa.y<bb.y;
}
bool cmp_y(X aa, X bb){
    if(aa.y!=bb.y) return aa.y<bb.y;
    return aa.x<bb.x;
}

double len(X aa, X bb){return sqrt((aa.x-bb.x)*(aa.x-bb.x)+(aa.y-bb.y)*(aa.y-bb.y));}


double f(int left, int right){
    if(left==right) return ANS;
    if(left+1==right) return len(a[left],a[right]);

    double min1, min2, min, Min;
    int mid;
    mid=(left+right)>>1;

    min1=f(left,mid);
    printf("",min1);
    min2=f(mid+1,right);
    ANS=min=Min=MIN(min1,min2);

    int i,j,k,l;

    for(i=mid;i>left;i--) if(a[mid].x-min>a[i].x) break; left=i+1;
    for(i=mid;i<=right;i++) if(a[i].x>a[mid].x+min) break; right=i-1;


    std::sort(a+left,a+right+1,cmp_y);

    for(i=j=left;j<=right;j++){
        while(a[j+1].y<a[i].y+min && j+1<=right) j++;
        for(k=i;k<=j;k++){
            for(l=k+1;l<=j;l++){
                Min=MIN(Min,len(a[k],a[l]));
            }
        }

    }

    std::sort(a+left,a+right+1,cmp_x);

    return Min;
}
int main(){
    int i;
    scanf("%d",&n);
    for(i=1;i<=n;i++) scanf("%lf%lf",&a[i].x,&a[i].y);
    std::sort(a+1,a+1+n,cmp_x);
    ANS=len(a[1],a[2]);
    printf("%.2lf",f(1,n));
}

'; print "


4. Polygon (by gs11008)
"; print'
#include<stdio.h>
#include<memory.h>
int pre,n,qqq[510][2],x[510],chk[510],dap=1<<30,lll[510],z;
struct data{
	int a,b;				// by gs11008 (using IndexTree) almost Perfect
} indextree[1<<12];

int i,j,maxx;

int f(int a,int b){
	int M=0;
	while(a<b){
		if(~b&1){
			if(M<indextree[b].b)
				M=indextree[b].b;
			b--;
		}
		a>>=1,b>>=1;
	}
	if(a==b&&M<indextree[a].b)M=indextree[a].b;
	return M;
}
int main(){
	scanf("%d",&n);
	for(i=1;i<=n;i++)scanf("%d%d",qqq[i],qqq[i]+1);
	pre=x[0]=chk[1]=1;
	for(i=1;i<n;i++){
		if(chk[qqq[pre][0]]==0){
			chk[qqq[pre][0]]=1;
			x[i]=qqq[pre][0];
			pre=qqq[pre][0];
		}
		else if(chk[qqq[pre][1]]==0){
			chk[qqq[pre][1]]=1;
			x[i]=qqq[pre][1];
			pre=qqq[pre][1];
		}
		else break;
	}
	if(i!=n || (qqq[x[n-1]][0]!=1 && qqq[x[n-1]][1]!=1))return printf("-1");

	for(z=0;z<n;z++){
		memset(indextree,0,sizeof(indextree));
		for(i=0;i<n;i++)
			lll[i]=x[(i+z)%n];
		int p;
		for(p=1;p<=n;p*=2);
		for(i=0;i<n;i++){
			int t=p+lll[i]-1;
			indextree[t].a=1;
			indextree[t].b=f(p,t-1)+1;
			for(j=t;j>1;j>>=1){
				if(indextree[j>>1].a==0)indextree[j>>1]=indextree[j];
				else if(indextree[j>>1].b<indextree[j].b)indextree[j>>1]=indextree[j];
			}
		}
		if(n-indextree[1].b<dap)dap=n-indextree[1].b;
	}
	for(i=0;i<n/2;i++){
		int t=x[i];
		x[i]=x[n-i-1];
		x[n-i-1]=t;
	}
	for(z=0;z<n;z++){
		memset(indextree,0,sizeof(indextree));
		for(i=0;i<n;i++)
			lll[i]=x[(i+z)%n];
		int p;
		for(p=1;p<=n;p*=2);
		for(i=0;i<n;i++){
			int t=p+lll[i]-1;
			indextree[t].a=1;
			indextree[t].b=f(p,t-1)+1;
			for(j=t;j>1;j>>=1){
				if(indextree[j>>1].a==0)indextree[j>>1]=indextree[j];
				else if(indextree[j>>1].b<indextree[j].b)indextree[j>>1]=indextree[j];
			}
		}
		if(n-indextree[1].b<dap)dap=n-indextree[1].b;
	}
	printf("%d",dap);
}

'; print "
5¹øÀº Á¦´ë·Î Ç®ÀÌÇÑ »ç¶÷ÀÌ ¾ø½À´Ï´Ù. µµÀüÇϼ¼¿ä!!! À§ ÇعýÀ» ºÐ¼®ÇÏ¿© ¿­½ÉÈ÷ °øºÎÇսôÙ. ¹®Á¦ µî·ÏµÇ¸é µµÀüÇϼ¼¿ä!!"; print ''; ?>