���� ���ǰ��絵 ���� ���� �ٶ��ϴ�.
"; 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 - �������� 25%�̳�


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

: gs12065, gs12117

"; print "



Gold Medal List!! (cutline 1000pts)


: gs12117, gs12065

"; print "



Silver Medal List (cutline 707pts)

: ainta, tncks0121, gs12120

"; print "



Bronze Medal List (cutline 447pts)


: gs13003, gs11028, pl0892029, gs12016, gs11103, gs12013, ajou709


"; print "�� ���

"; $dir="/var/www/bbs/moi/16th/"; $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 = 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 += 12.9411+($j*0.001); else if($j==2) $score += 24+($j*0.001); else if($j==3) $score += 12.381+($j*0.001); else if($j==4) $score += 28+($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 ""; } print "
Rank user Long Jump (220) Ball Game (240) Make Polygon (260) Microbiology Laps (280)
'.($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 perfact Solution!!


1. Long Jump Competition (by ainta)"; print '
  1. #include<stdio.h>  
  2. int n,w[20001],i,IT[70000],l,R[20001],B,E,M,S;  
  3. int find(int p){  
  4.     B=l,E=l+p,S=0;  
  5.     while(B<=E){  
  6.         if(B&1)S+=IT[B];  
  7.         if(!(E&1))S+=IT[E];  
  8.         B=(B+1)/2,E=(E-1)/2;  
  9.     }  
  10.     return S;  
  11. }  
  12. int main()  
  13. {  
  14.     int b,e,m,t;  
  15.     scanf("%d",&n);  
  16.     l=1;  
  17.     while(l<n)l*=2;  
  18.     for(i=0;i<n;i++){  
  19.         scanf("%d",&w[i]);  
  20.         t=i+l;while(t)IT[t]++,t/=2;}  
  21.     for(i=n-1;i>=0;i--){  
  22.         b=0,e=n-1;  
  23.         while(b<=e){  
  24.             m=(b+e+1)/2;  
  25.             if(IT[m+l]==0){  
  26.                 if(find(m)>=w[i])e=m-1;  
  27.                 else b=m+1;}  
  28.             else{  
  29.                 t=find(m);  
  30.                 if(t==w[i])break;  
  31.                 if(t<w[i])b=m+1;  
  32.                 else e=m-1;  
  33.             }  
  34.         }  
  35.         R[m]=i;  
  36.         t=m+l;while(t)IT[t]--,t/=2;  
  37.     }  
  38.     for(i=0;i<n;i++)printf("%d\n",R[i]+1);  
  39. }  

'; print "


Here is another solution 1. Long Jump Competition (by tncks0121)"; print '
  1. #include<stdio.h>  
  2. #include<string.h>  
  3.   
  4. #define N_ 20000  
  5. #define bl 145  
  6.   
  7. int N;  
  8. int bucket[bl+1][bl*2+1], bn;  
  9. int cnt[bl+1];  
  10.   
  11. int tmp[N_+1], tn;  
  12. int chk;  
  13. void replace(){  
  14.     int i, j; tn = 0;  
  15.     for(i=1; i<=bl; i++){  
  16.         for(j=1; j<=cnt[i]; j++) tmp[++tn] = bucket[i][j];  
  17.         cnt[i] = 0;  
  18.     }  
  19.     j = 1; bn = 1;  
  20.     for(i=1; i<=tn; i++){  
  21.         bucket[bn][++cnt[bn]] = tmp[i];  
  22.         if(cnt[bn] == bl) j++;  
  23.     }  
  24. }  
  25.   
  26. void insert(int rank, int dat){  
  27.     int bx, by = rank, i;  
  28.     for(bx=1; bx<=bn; bx++){  
  29.         if(by > cnt[bx]) by -= cnt[bx];  
  30.         else break;  
  31.     } if(bx > bn) bx = bn, by = cnt[bn]+1;  
  32.     for(i=++cnt[bx]; i>by; i--) bucket[bx][i] = bucket[bx][i-1];  
  33.     bucket[bx][by] = dat;  
  34. }  
  35.   
  36. int main(){  
  37.     int i, j;  
  38.     scanf("%d",&N); bn = 1;  
  39.     for(i=1; i<=N; i++){  
  40.         int d; scanf("%d",&d); ++chk;  
  41.         if(i == 1) bucket[1][1] = i, cnt[1] = 1;  
  42.         else{  
  43.             insert(d,i);   
  44.             if(chk == bl) replace(), chk=0;  
  45.         }  
  46.     }  
  47.   
  48.     for(i=1; i<=bl; i++) for(j=1; j<=cnt[i]; j++){  
  49.         printf("%d\n",bucket[i][j]);  
  50.     }  
  51.     return 0;  
  52. }  

'; print "


Here is extra solution 1. Long Jump Competition (by admin)"; print '
  1. #include<stdio.h>  
  2. #include<list>  
  3. using namespace std;  
  4.   
  5. int main(void)  
  6. {  
  7.     int n, rank=0, i;  
  8.     list<int> L;  
  9.     list<int>::iterator iter;  
  10.     scanf("%d", &n);  
  11.     for( i = 1, iter = L.begin() ; i <= n ; i++ )  
  12.     {  
  13.         int prev = rank;  
  14.         scanf("%d", &rank);  
  15.         prev = rank-prev;  
  16.         if( prev < rank ) advance(iter, prev-1);  
  17.         else iter=L.begin(), advance(iter, rank-1);  
  18.         L.insert(iter, i);  
  19.     }  
  20.     for( iter = L.begin() ; iter != L.end() ; iter++ )  
  21.         printf("%d\n", *iter);  
  22.     return 0;  
  23. }  

'; print "


2. Ball Game(by pl0892029) "; print '
  1. #include <cstdio>  
  2.   
  3. int main()  
  4. {  
  5.     int n;  
  6.     scanf("%d",&n);  
  7.     printf("%lld",(long long)((n+1)*(n+1)/2-1)%1000000007);  
  8. }  

'; print "


3. Make Polygon (by ainta)
"; print'
  1. #include<stdio.h>  
  2. long long A[10],B[10],K=1000000000,R,T,X,a,b,c,d,e,f,g,h,t1,t2,t3,t4,x,y;  
  3. int i,n;  
  4. void PP(int N){  
  5.     X=1,a=1,b=0,c=0,d=1,e=4,f=1,g=4,h=0;  
  6.     while(N){  
  7.         if(N&X){  
  8.             t1=a*e+b*g,t2=a*f+b*h,t3=c*e+d*g,t4=c*f+d*h;  
  9.             t1%=K,t2%=K,t3%=K,t4%=K;a=t1,b=t2,c=t3,d=t4;N-=X;}  
  10.         t1=e*e+f*g,t2=e*f+f*h,t3=g*e+h*g,t4=g*f+h*h;  
  11.         t1%=K,t2%=K,t3%=K,t4%=K;e=t1,f=t2,g=t3,h=t4;X*=2;}}  
  12. int main()  
  13. {  
  14.     A[1]=B[2]=1,B[3]=7,A[2]=4,A[3]=14,A[4]=68,B[4]=34;  
  15.     scanf("%d",&n);  
  16.     if(n<=6){  
  17.         for(i=5;i<=n;i++){  
  18.             A[i]=(A[i-1]+A[i-2])*4;  
  19.             B[i]=A[i]/2;  
  20.             A[i]%=K,B[i]%=K;}  
  21.         printf("%lld\n",(A[n-1]+B[n-1]*2+2*(A[n-2]+2*B[n-2]))%K);}  
  22.     else{  
  23.         R=68,T=14;  
  24.         PP(n-5);  
  25.         x=(R*a+T*c)%K;  
  26.         PP(n-6);  
  27.         y=(R*a+T*c)%K;  
  28.         printf("%lld\n",(x*2+y*4)%K);  
  29.     }  
  30. }  

'; print "

Here is another Solution 3. Make Polygon (by ainta)
"; print'
  1. #include <cstdio>  
  2.   
  3. #define MOD 1000000000  
  4. #define ll long long  
  5.   
  6. int n;  
  7. ll first[6]={1,0,0,1,1,0}, res[6], recur[6][6]={  
  8.     0,1,0,1,0,1,  
  9.     0,1,1,1,0,1,  
  10.     0,1,0,1,0,1,  
  11.     1,2,0,2,1,2,  
  12.     0,1,0,1,0,1,  
  13.     0,1,1,1,0,1  
  14. };  
  15.   
  16. void multiply(ll f[6][6], ll s[6][6], ll r[6][6]){  
  17.     int i, j, k;  
  18.     for(i=0; i<6; i++){  
  19.         for(j=0; j<6; j++){  
  20.             r[i][j] = 0;  
  21.             for(k=0; k<6; k++){  
  22.                 r[i][j] += f[i][k]*s[k][j];  
  23.                 if(r[i][j] >= MOD) r[i][j] %= MOD;  
  24.             }  
  25.         }  
  26.     }  
  27. }  
  28.   
  29. void copy(ll f[6][6], ll s[6][6]){  
  30.     int i, j;  
  31.     for(i=0; i<6; i++){  
  32.         for(j=0; j<6; j++){  
  33.             s[i][j] = f[i][j];  
  34.         }  
  35.     }  
  36. }  
  37.   
  38. void solve(){  
  39.     int t=1;  
  40.     while((t<<1) <= n) t = t<<1;  
  41.   
  42.     ll now[6][6]={  
  43.         1,0,0,0,0,0,  
  44.         0,1,0,0,0,0,  
  45.         0,0,1,0,0,0,  
  46.         0,0,0,1,0,0,  
  47.         0,0,0,0,1,0,  
  48.         0,0,0,0,0,1  
  49.     }, tmp[6][6];  
  50.   
  51.     while(t){  
  52.         multiply(now, now, tmp);  
  53.         copy(tmp, now);  
  54.         if(n&t){  
  55.             multiply(now, recur, tmp);  
  56.             copy(tmp, now);  
  57.         }  
  58.         t = t>>1;  
  59.     }  
  60.   
  61.     int i, j;  
  62.     for(i=0; i<6; i++){  
  63.         res[i] = 0;  
  64.         for(j=0; j<6; j++){  
  65.             res[i] += first[j]*now[i][j];  
  66.             if(res[i] >= MOD) res[i] %= MOD;  
  67.         }  
  68.     }  
  69. }  
  70.   
  71. int main(){  
  72.     scanf("%d", &n);  
  73.     n--;  
  74.   
  75.     solve();  
  76.   
  77.     printf("%lld\n", (res[1]-res[2]+res[5]+MOD)%MOD);  
  78.       
  79.     return 0;  
  80. }  

'; print "


4. Microbiology Labs (by gs12117)
"; print'
  1. #include<stdio.h>  
  2. #include<queue>  
  3. std::priority_queue<int> a;  
  4. int m[300100][2];  
  5. int tmp[300100][2];  
  6. int left[300100],p;  
  7. int n;  
  8. void sort(int start,int end){  
  9.     if(end<start+2)return;  
  10.     int mid=(start+end)/2;  
  11.     sort(start,mid);  
  12.     sort(mid,end);  
  13.     int i,j,k;  
  14.     i=start;  
  15.     j=mid;  
  16.     k=start;  
  17.     for(;i<mid&&j<end;k++){  
  18.         if(m[i][1]>m[j][1]){  
  19.             tmp[k][0]=m[i][0];  
  20.             tmp[k][1]=m[i][1];  
  21.             i++;  
  22.         }  
  23.         else{  
  24.             tmp[k][0]=m[j][0];  
  25.             tmp[k][1]=m[j][1];  
  26.             j++;  
  27.         }  
  28.     }  
  29.     for(;i<mid;i++){  
  30.         tmp[k][0]=m[i][0];  
  31.         tmp[k][1]=m[i][1];  
  32.         k++;  
  33.     }  
  34.     for(i=start;i<k;i++){  
  35.         m[i][0]=tmp[i][0];  
  36.         m[i][1]=tmp[i][1];  
  37.     }  
  38. }  
  39. int main(){  
  40.     scanf("%d",&n);  
  41.     int i,ans,siz;  
  42.     long long int total;  
  43.     for(i=0;i<n;i++){  
  44.         scanf("%d%d",&m[i][0],&m[i][1]);  
  45.     }  
  46.     sort(0,n);  
  47.     for(total=siz=ans=i=0;i<n;i++){  
  48.         a.push(m[i][0]);  
  49.         siz++;  
  50.         total+=m[i][0];  
  51.         while(p&&total<=(long long int)siz*m[i][1]){  
  52.             p--;  
  53.             a.push(left[p]);  
  54.             siz++;  
  55.             total+=left[p];  
  56.         }  
  57.         if(total>(long long int)siz*m[i][1]){  
  58.             left[p]=a.top();  
  59.             p++;  
  60.             total-=a.top();  
  61.             a.pop();  
  62.             siz--;  
  63.         }  
  64.         if(siz>ans){  
  65.             ans=siz;  
  66.         }  
  67.     }  
  68.     printf("%d",ans);  
  69. }  

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