"; 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 '
  1. #include <stdio.h>  
  2.                         //by byeonbi  
  3. int main()  
  4. {  
  5.     char S[10001]={0,};  
  6.     int koi, ioi;  
  7.     int i;  
  8.   
  9.     scanf("%s", S);  
  10.   
  11.     koi=ioi=0;  
  12.     i=2;  
  13.     while(S[i]){  
  14.         if(S[i-1]=='O' && S[i]=='I'){  
  15.             S[i-2]=='I'?ioi++:(S[i-2]=='K'?koi++:0);  
  16.         }  
  17.   
  18.         i++;  
  19.     }  
  20.   
  21.     printf("%d\n%d\n", koi, ioi);  
  22.     return 0;  
  23. }  
  24.       

'; print "
Here is another solution 1. KOI&IOI (by august14)"; print '
  1. #include <stdio.h>  
  2. #include <string.h>     
  3.                     //by august14  
  4. char str[10101];  
  5. int l,koi,ioi;  
  6.   
  7. int main()  
  8. {  
  9.     int i;  
  10.   
  11.     scanf ("%s",str);  
  12.     l = strlen(str);  
  13.     for (i=2;i<l;i++){  
  14.         if (str[i-1] == 'O' && str[i] == 'I'){  
  15.             if (str[i-2] == 'K') koi++;  
  16.             if (str[i-2] == 'I') ioi++;  
  17.             i++;  
  18.         }  
  19.     }  
  20.     printf ("%d\n%d\n",koi,ioi);  
  21.   
  22.     return 0;  
  23. }  
  24.   
  25.       

'; print "

[Problem 2]
�� ������ TLE�� �����ؾ� �մϴ�. �� 21���� ����� ���ؾ��ϹǷ� n���� �������縦 �ϸ� TLE�� ��ϴ�. sqrt(n)������ �����Ͽ� ��� ����� ���ϴ� ����� ����ϴ� �Ͱ�, �ߺ��� ���Ҹ� ó���ϴ� ���� �����Դϴ�. ������ �ع��� ��� STL�� set�� Ȱ���Ͽ� �ߺ��� ó���߽��ϴ�. �����ϼ���

2. Union(by teram)"; print '
  1. #include<stdio.h>  
  2. #include<set>  
  3.                     // by tream  
  4. using namespace std;  
  5.   
  6. set<int> S;  
  7. set<int>::iterator iter;  
  8.   
  9. void insert_division(int n);  
  10.   
  11. int main() {  
  12.   
  13.     int a,b,c;  
  14.   
  15.     scanf("%d %d %d", &a, &b, &c);  
  16.   
  17.     insert_division(a);  
  18.     insert_division(b);  
  19.     insert_division(c);  
  20.   
  21.     for(iter=S.begin() ; iter!=S.end() ; iter++)  
  22.         printf("%d ", *iter);  
  23.     printf("\n");  
  24.   
  25.     return 0;  
  26. }  
  27.   
  28. void insert_division(int n) {  
  29.   
  30.     int i;  
  31.   
  32.     for(i=1 ; i*i<=n ; i++) {  
  33.         if(n%i==0) {  
  34.             S.insert(i);  
  35.             if(i*i!=n)  
  36.                 S.insert(n/i);  
  37.         }  
  38.     }  
  39.   
  40.     return;  
  41. }  
  42.       

'; print "
Here is another solution 2. Union (by august14)"; print '
  1. #include <stdio.h>  
  2. #include <set>  
  3. using namespace std;  
  4.                 //by august14  
  5. set<int> S;  
  6.   
  7. int main()  
  8. {  
  9.     int i,j,k;  
  10.   
  11.     for (k=0;k<3;k++){  
  12.         scanf ("%d",&j);  
  13.         for (i=1;i*i<=j;i++){  
  14.             if (j % i == 0){  
  15.                 S.insert(j/i);  
  16.                 S.insert(i);  
  17.             }  
  18.         }  
  19.     }  
  20.   
  21.     while (!S.empty()){  
  22.         printf ("%d ",*S.begin());  
  23.         S.erase(S.begin());  
  24.     }  
  25.     return 0;  
  26. }  
  27.       

'; print "

[Problem 3]
�� ������ ��Ȳ�� �ùķ��̼� �ϸ� ���� �ذ��� �� �ֽ��ϴ�. �־��� ��� ������ ��Ȯ�ϰ� �ùķ����� �ؼ� ó���ϸ� accepted�� ���� �� �ֽ��ϴ�. �ַ�� �����ϼ���~ 2������ �����մϴ�.


Here is solution 3. Card Game(by gs12065)"; print '
  1. #include <stdio.h>  
  2. #include <list>  
  3.                     // by gs12065  
  4. int n;  
  5. bool chk[205];  
  6. std::list < int > a, b;  
  7.   
  8. int main(){  
  9.     scanf("%d", &n);  
  10.   
  11.     int last, i;  
  12.     for(i=0; i<n; i++){  
  13.         scanf("%d", &last);  
  14.         chk[last] = 1;  
  15.     }  
  16.     for(i=1; i<=2*n; i++){  
  17.         if(chk[i]) a.push_back(i);  
  18.         else b.push_back(i);  
  19.     }  
  20.   
  21.     last = 0;  
  22.     std::list < int >::iterator it;  
  23.     while(1){  
  24.         for(it=a.begin(); it!=a.end(); it++){  
  25.             if(*it > last){  
  26.                 last = *it;  
  27.                 a.erase(it);  
  28.                 break;  
  29.             }  
  30.         }  
  31.         if(a.size() == 0) break;  
  32.         else if(it == a.end()) last = 0;  
  33.   
  34.         for(it=b.begin(); it!=b.end(); it++){  
  35.             if(*it > last){  
  36.                 last = *it;  
  37.                 b.erase(it);  
  38.                 break;  
  39.             }  
  40.         }  
  41.         if(b.size() == 0) break;  
  42.         else if(it == b.end()) last = 0;  
  43.     }  
  44.   
  45.     printf("%d\n%d\n", b.size(), a.size());  
  46.   
  47.     return 0;  
  48. }  
  49.       

'; print "
Here is another solution 3. Card Game (by dijkstra)"; print '
  1. #include<stdio.h>  
  2. int a[210],p1[210],p2[210], p=1;        // by dijkstra  
  3. int main()  
  4. {  
  5.     int n,i,j,t;  
  6.     scanf("%d",&n);  
  7.     for(i=0;i<n;i++) scanf("%d",&t), a[t]++;  
  8.     for(i=1;i<=2*n;i++)  
  9.         if(a[i]) p1[i]++,p1[0]++; else p2[i]++,p2[0]++;  
  10.     while(p1[0]&&p2[0])  
  11.     {  
  12.         while(p<=2*n+1&&!p1[p++]);   
  13.         if(p-1<=2*n) p1[p-1]=0, p1[0]--; else p=1;  
  14.         if(!p1[0]) break;  
  15.         while(p<=2*n+1&&!p2[p++]);  
  16.         if(p-1<=2*n) p2[p-1]=0, p2[0]--; else p=1;  
  17.     }  
  18.     printf("%d\n%d",p2[0],p1[0]);  
  19. }  
  20.       

'; print "

[Problem 4]
�� ������ TLE�� �����ؾ� �մϴ�. ������ ������ ���ڸ��� ���� �� ó���� �߿��մϴ�. 2���� �ַ�� �����մϴ�.


Here is solution 4. Find Constellation(by vega4792)"; print '
  1. #include<stdio.h>  
  2. #include<algorithm>  
  3.                     //by vega4792  
  4. struct _pos {  
  5.     int x, y;  
  6. }star[211], all[1111];  
  7.   
  8. int m,n,x,y,i,j,k,gapx,gapy,cnt,flag;  
  9.   
  10. bool comp(_pos q, _pos w) {  
  11.     if (q.x==w.x) return q.y < w.y;  
  12.     else return q.x < w.x;   
  13. }  
  14.   
  15. main()  
  16. {  
  17.     scanf("%d",&m);  
  18.     for(i=0; i<m; i++)  
  19.         scanf("%d%d",&star[i].x,&star[i].y);  
  20.   
  21.     scanf("%d",&n);  
  22.     for(i=0; i<n; i++)  
  23.         scanf("%d%d",&all[i].x,&all[i].y);  
  24.   
  25.     std::sort(all,all+n,comp);  
  26.   
  27.     for(i=0; i<n; i++)  
  28.     {  
  29.         gapx=all[i].x - star[0].x;  
  30.         gapy=all[i].y - star[0].y;  
  31.         cnt=1;  
  32.         flag=0;  
  33.         for(j=1; j<m; j++)  
  34.         {  
  35.             for(k=0; k<n; k++)  
  36.             {  
  37.                 if(i==k) continue;  
  38.                 if(star[j].x+gapx==all[k].x && star[j].y+gapy==all[k].y)  
  39.                 {  
  40.                     cnt++;  
  41.                     break;  
  42.                 }  
  43.                 if(star[j].x+gapx < all[k].x) {  
  44.                     flag=1;  
  45.                     break;  
  46.                 }  
  47.             }  
  48.             if(flag) break;  
  49.         }  
  50.         if(cnt==m)  
  51.             break;  
  52.     }  
  53.   
  54.     printf("%d %d",gapx, gapy);  
  55. }  
  56.       

'; print "
Here is another solution 4. Find Constellation (by august14)"; print '
  1. #include <stdio.h>  
  2. #include <algorithm>  
  3. using namespace std;                //by august14  
  4. struct point{int x,y;}S[222],A[1111];  
  5. bool cmp(const point& a, const point& b){return (a.y == b.y) ? a.x < b.x : a.y < b.y;}  
  6. int N,M;  
  7.   
  8. int main()  
  9. {  
  10.     int i,j,k;  
  11.   
  12.     scanf ("%d",&N);  
  13.     for (i=0;i<N;i++) scanf ("%d %d",&S[i].x,&S[i].y);  
  14.     sort(S,S+N,cmp);  
  15.   
  16.     scanf ("%d",&M);  
  17.     for (i=0;i<M;i++) scanf ("%d %d",&A[i].x,&A[i].y);  
  18.     sort(A,A+M,cmp);  
  19.   
  20.     for (i=0;i<M;i++){  
  21.         j = 1;  
  22.         for (k=i+1;k<M&&j<N;k++){  
  23.             if (S[0].x-S[j].x == A[i].x-A[k].x &&  
  24.                 S[0].y-S[j].y == A[i].y-A[k].y) j++;  
  25.         }  
  26.   
  27.         if (j == N){  
  28.             printf ("%d %d\n",A[i].x-S[0].x,A[i].y-S[0].y);  
  29.             break;  
  30.         }  
  31.     }  
  32.   
  33.     return 0;  
  34. }  
  35.       


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