"; print " ¾Æ·¡ Á¡¼ö´Â Âü¿©ÇÑ ¸ðµç ºÐ¿¡ ´ëÇÑ °á°úÀÔ´Ï´Ù.
´ÙÀ½¿¡ ÁغñÁßÀÎ ¸ðÀÇ°í»ç¿¡µµ Âü°¡ÇØ Áֽñ⠹ٶø´Ï´Ù.
"; print "
¹ü·Ê : o - Accepted, x - Wrong Answer, s - signal out(runtime error), t - Time Limit Exceeded


"; print "4ȸ ³ª´Â ÄÚ´õ´Ù(Chick)!! °á°ú

"; print "
Gold Medal - ÇÑ ¹øÀÌ¶óµµ Á¦ÃâÇÑ Âü°¡ÀÚÀÇ 10%, Silver Medal - Âü°¡ÀÚÀÇ 20%, Bronze Medal - Âü°¡ÀÚÀÇ 30%

"; print " : byeonbi, dijkstra, gs12065, shadow2496, teram, vega4792
"; print " : gs10107, gs11059, zlzmsrhak56, lawl, pl0892029
"; print " : august14, gs11008, k5888200, nobe0716, ainta, takuma, jerry1259, toowhalsrb2, gs11103, alskdj28



"; $dir="/var/www/bbs/moi/4stchk/"; $pnum = 4; $files1 = scandir($dir); $number=1; $iuser = array(); $ip1 = array(); $ip2 = array(); $ip3 = array(); $ip4 = 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) { $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; 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!=4) $score += 25+($j*0.001); else $score += 25+($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 $ip4[$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; $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 (µ¿Á¡ÀÏ °æ¿ì¿¡ 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 "
Rank user KOI&IOI(250) Union(250) Card Game(250) Find Constellation(250) Score
'.($rank[$i]+1).''.$iuser[$i].''.$ip1[$i].''.$ip2[$i].''.$ip3[$i].''.$ip4[$i].''.(floor($isc[$i])).'

"; print "À̹ø ´ëȸ¿¡ Âü°¡ÇϽŠ".($number)."ºÐ ¸ðµÎ ¼ö°íÇϼ̽À´Ï´Ù!! ´ÙÀ½ °æ¿¬À» ±â´ëÇϼ¼¿ä~
"; print "¾ÕÀ¸·Î ±âȸ°¡ µÈ´Ù¸é »çÀºÇ°µµ Áغñ¿¹Á¤ ^^;"; print "


Here is some User's perfect Solution!!

"; print "
[Problem 1]
KOI&IOI´Â ¹®Á¦´Â °£´ÜÇÑ ¹®ÀÚ¿­À» ó¸®ÇÏ´Â ¹®Á¦¿´½À´Ï´Ù. ½Ã°£º¹Àâµµ¿¡ °ü°è¾øÀÌ Àü¼öÁ¶»ç¸¦ Çصµ ÃæºÐÈ÷ ¸ÂÀ» ¼ö ÀÖ´Â ¹®Á¦¿´½À´Ï´Ù. °ø°³ÇÑ µÎ Çعý ¸ðµÎ ÁÁÀº ¹æ¹ýÀÔ´Ï´Ù. Âü°íÇϼ¼¿ä."; print "


1. KOI&IOI (by byeonbi)"; print '
#include <stdio.h>
						//by byeonbi
int main()
{
	char S[10001]={0,};
	int koi, ioi;
	int i;

	scanf("%s", S);

	koi=ioi=0;
	i=2;
	while(S[i]){
		if(S[i-1]=='O' && S[i]=='I'){
			S[i-2]=='I'?ioi++:(S[i-2]=='K'?koi++:0);
		}

		i++;
	}

	printf("%d\n%d\n", koi, ioi);
	return 0;
}
	

'; print "
Here is another solution 1. KOI&IOI (by august14)"; print '
#include <stdio.h>
#include <string.h>	
					//by august14
char str[10101];
int l,koi,ioi;

int main()
{
	int i;

	scanf ("%s",str);
	l = strlen(str);
	for (i=2;i<l;i++){
		if (str[i-1] == 'O' && str[i] == 'I'){
			if (str[i-2] == 'K') koi++;
			if (str[i-2] == 'I') ioi++;
			i++;
		}
	}
	printf ("%d\n%d\n",koi,ioi);

	return 0;
}

	

'; print "

[Problem 2]
ÀÌ ¹®Á¦´Â TLE¸¦ ÁÖÀÇÇØ¾ß ÇÕ´Ï´Ù. ¾à 21¾ïÀÇ ¾à¼ö¸¦ ±¸ÇؾßÇϹǷΠnÀ¸·Î Àü¼öÁ¶»ç¸¦ Çϸé TLE°¡ ¶å´Ï´Ù. sqrt(n)±îÁö¸¸ Á¶»çÇÏ¿© ¸ðµç ¾à¼ö¸¦ ±¸ÇÏ´Â ¹æ¹ýÀ» »ç¿ëÇÏ´Â °Í°ú, Áߺ¹µÈ ¿ø¼Ò¸¦ ó¸®ÇÏ´Â °ÍÀÌ °ü°ÇÀÔ´Ï´Ù. Á¦½ÃÇÑ ÇعýÀº ¸ðµÎ STLÀÇ setÀ» È°¿ëÇÏ¿© Áߺ¹À» ó¸®Çß½À´Ï´Ù. Âü°íÇϼ¼¿ä

2. Union(by teram)"; print '
#include<stdio.h>
#include<set>
					// by tream
using namespace std;

set<int> S;
set<int>::iterator iter;

void insert_division(int n);

int main() {

	int a,b,c;

	scanf("%d %d %d", &a, &b, &c);

	insert_division(a);
	insert_division(b);
	insert_division(c);

	for(iter=S.begin() ; iter!=S.end() ; iter++)
		printf("%d ", *iter);
	printf("\n");

	return 0;
}

void insert_division(int n) {

	int i;

	for(i=1 ; i*i<=n ; i++) {
		if(n%i==0) {
			S.insert(i);
			if(i*i!=n)
				S.insert(n/i);
		}
	}

	return;
}
	

'; print "
Here is another solution 2. Union (by august14)"; print '
#include <stdio.h>
#include <set>
using namespace std;
				//by august14
set<int> S;

int main()
{
	int i,j,k;

	for (k=0;k<3;k++){
		scanf ("%d",&j);
		for (i=1;i*i<=j;i++){
			if (j % i == 0){
				S.insert(j/i);
				S.insert(i);
			}
		}
	}

	while (!S.empty()){
		printf ("%d ",*S.begin());
		S.erase(S.begin());
	}
	return 0;
}
	

'; print "

[Problem 3]
ÀÌ ¹®Á¦´Â »óȲÀ» ½Ã¹Ä·¹ÀÌ¼Ç ÇÏ¸é ½±°Ô ÇØ°áÇÒ ¼ö ÀÖ½À´Ï´Ù. ÁÖ¾îÁø ¸ðµç Á¶°ÇÀ» Á¤È®ÇÏ°Ô ½Ã¹Ä·¹ÀÌÆà Çؼ­ ó¸®Çϸé accepted¸¦ ¹ÞÀ» ¼ö ÀÖ½À´Ï´Ù. ¼Ö·ç¼Ç Âü°íÇϼ¼¿ä~ 2°¡Áö¸¦ Á¦½ÃÇÕ´Ï´Ù.


Here is solution 3. Card Game(by gs12065)"; print '
#include <stdio.h>
#include <list>
					// by gs12065
int n;
bool chk[205];
std::list < int > a, b;

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

	int last, i;
	for(i=0; i<n; i++){
		scanf("%d", &last);
		chk[last] = 1;
	}
	for(i=1; i<=2*n; i++){
		if(chk[i]) a.push_back(i);
		else b.push_back(i);
	}

	last = 0;
	std::list < int >::iterator it;
	while(1){
		for(it=a.begin(); it!=a.end(); it++){
			if(*it > last){
				last = *it;
				a.erase(it);
				break;
			}
		}
		if(a.size() == 0) break;
		else if(it == a.end()) last = 0;

		for(it=b.begin(); it!=b.end(); it++){
			if(*it > last){
				last = *it;
				b.erase(it);
				break;
			}
		}
		if(b.size() == 0) break;
		else if(it == b.end()) last = 0;
	}

	printf("%d\n%d\n", b.size(), a.size());

	return 0;
}
	

'; print "
Here is another solution 3. Card Game (by dijkstra)"; print '
#include<stdio.h>
int a[210],p1[210],p2[210], p=1;		// by dijkstra
int main()
{
	int n,i,j,t;
	scanf("%d",&n);
	for(i=0;i<n;i++) scanf("%d",&t), a[t]++;
	for(i=1;i<=2*n;i++)
		if(a[i]) p1[i]++,p1[0]++; else p2[i]++,p2[0]++;
	while(p1[0]&&p2[0])
	{
		while(p<=2*n+1&&!p1[p++]); 
		if(p-1<=2*n) p1[p-1]=0, p1[0]--; else p=1;
		if(!p1[0]) break;
		while(p<=2*n+1&&!p2[p++]);
		if(p-1<=2*n) p2[p-1]=0, p2[0]--; else p=1;
	}
	printf("%d\n%d",p2[0],p1[0]);
}
	

'; print "

[Problem 4]
ÀÌ ¹®Á¦µµ TLE¸¦ ÁÖÀÇÇØ¾ß ÇÕ´Ï´Ù. ¿øº»°ú »çÁøÀÇ º°ÀÚ¸®¸¦ ºñ±³ÇÒ ¶§ 󸮰¡ Áß¿äÇÕ´Ï´Ù. 2°¡Áö ¼Ö·ç¼Ç Á¦½ÃÇÕ´Ï´Ù.


Here is solution 4. Find Constellation(by vega4792)"; print '
#include<stdio.h>
#include<algorithm>
					//by vega4792
struct _pos {
	int x, y;
}star[211], all[1111];

int m,n,x,y,i,j,k,gapx,gapy,cnt,flag;

bool comp(_pos q, _pos w) {
	if (q.x==w.x) return q.y < w.y;
	else return q.x < w.x; 
}

main()
{
	scanf("%d",&m);
	for(i=0; i<m; i++)
		scanf("%d%d",&star[i].x,&star[i].y);

	scanf("%d",&n);
	for(i=0; i<n; i++)
		scanf("%d%d",&all[i].x,&all[i].y);

	std::sort(all,all+n,comp);

	for(i=0; i<n; i++)
	{
		gapx=all[i].x - star[0].x;
		gapy=all[i].y - star[0].y;
		cnt=1;
		flag=0;
		for(j=1; j<m; j++)
		{
			for(k=0; k<n; k++)
			{
				if(i==k) continue;
				if(star[j].x+gapx==all[k].x && star[j].y+gapy==all[k].y)
				{
					cnt++;
					break;
				}
				if(star[j].x+gapx < all[k].x) {
					flag=1;
					break;
				}
			}
			if(flag) break;
		}
		if(cnt==m)
			break;
	}

	printf("%d %d",gapx, gapy);
}
	

'; print "
Here is another solution 4. Find Constellation (by august14)"; print '
#include <stdio.h>
#include <algorithm>
using namespace std;				//by august14
struct point{int x,y;}S[222],A[1111];
bool cmp(const point& a, const point& b){return (a.y == b.y) ? a.x < b.x : a.y < b.y;}
int N,M;

int main()
{
	int i,j,k;

	scanf ("%d",&N);
	for (i=0;i<N;i++) scanf ("%d %d",&S[i].x,&S[i].y);
	sort(S,S+N,cmp);

	scanf ("%d",&M);
	for (i=0;i<M;i++) scanf ("%d %d",&A[i].x,&A[i].y);
	sort(A,A+M,cmp);

	for (i=0;i<M;i++){
		j = 1;
		for (k=i+1;k<M&&j<N;k++){
			if (S[0].x-S[j].x == A[i].x-A[k].x &&
				S[0].y-S[j].y == A[i].y-A[k].y) j++;
		}

		if (j == N){
			printf ("%d %d\n",A[i].x-S[0].x,A[i].y-S[0].y);
			break;
		}
	}

	return 0;
}
	


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