���� ���ǰ���� koi4u���ǰ���� ������ �˴ϴ�. ���� ���� �ٶ��ϴ�.
";
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 - �������� 30%
";
print "[ Winner!! ] (747pts)
: gs12117
";
print "
Gold Medal List!! (cutline 715pts)
: gs12117, gs12065
";
print "
Silver Medal List (cutline 467pts)
: mufflin, k5888200, gs12120
";
print "
Bronze Medal List (cutline 250pts)
: gs12059, ainta, sunghyen, nextpeace
";
print "��ü ����ǥ
";
$dir="/var/www/bbs/moi/14th/";
$pnum = 3;
$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 += 25+($j*0.001);
else if($j==2) $score += 17.5+($j*0.001);
else if($j==3) $score += 40+($j*0.001);
else if($j==4) $score += 21.43+($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 "
Rank
|
user
|
Strange (250)
|
Hope (350)
|
Bracket (400)
|
'.($rank[$i]+1).' | '.$iuser[$i].' | '.$ip1[$i].' | '.$ip2[$i].' | '.$ip3[$i].' | '.(floor($isc[$i])).' |
";
print "�̹� ��ȸ�� �����Ͻ� ".($number)."�� ��� �����ϼ̽��ϴ�!! ���� �濬�� ����ϼ���~
";
print "������ ��ȸ�� �ȴٸ� ����ǰ�� �غ��� ^^;";
print "
Here is some User's perfact Solution!!
1. Strange (by k5888200)";
print '- #include <stdio.h>
-
-
- long long n;
- long long e2[100],e3[100],N2,N3;
- int count;
-
- void f(long long N, int two, int three){
- if(N==0){
- count++;
- return ;
- }
-
- while(N%2==0) N/=2, two--;
- while(N%3==0) N/=3, three--;
-
- if(three>0) return ;
-
- int i,j;
- for(i=two;i>=0;i--) for(j=0;j<=N3;j++){
- if(N-e2[i]*e3[j]>=0) f(N-e2[i]*e3[j],i-1,j+1);
- else break;
- }
- }
-
- int main(){
- scanf("%lld",&n);
-
- while(n%2==0) n/=2;
- while(n%3==0) n/=3;
-
- int i;
- e2[0]=e3[0]=1;
- for(i=1;e2[i-1]<=n;i++) e2[i]=e2[i-1]*2; N2=i-1;
- for(i=1;e3[i-1]<=n;i++) e3[i]=e3[i-1]*3; N3=i-1;
-
- f(n,N2,0);
- if(n==1) count=0;
- printf("%d",count);
-
- }
#include <stdio.h>
long long n;
long long e2[100],e3[100],N2,N3;
int count;
void f(long long N, int two, int three){
if(N==0){
count++;
return ;
}
while(N%2==0) N/=2, two--;
while(N%3==0) N/=3, three--;
if(three>0) return ;
int i,j;
for(i=two;i>=0;i--) for(j=0;j<=N3;j++){
if(N-e2[i]*e3[j]>=0) f(N-e2[i]*e3[j],i-1,j+1);
else break;
}
}
int main(){
scanf("%lld",&n);
while(n%2==0) n/=2;
while(n%3==0) n/=3;
int i;
e2[0]=e3[0]=1;
for(i=1;e2[i-1]<=n;i++) e2[i]=e2[i-1]*2; N2=i-1;
for(i=1;e3[i-1]<=n;i++) e3[i]=e3[i-1]*3; N3=i-1;
f(n,N2,0);
if(n==1) count=0;
printf("%d",count);
}
';
print "
2. Hope (by gs12065) ";
print '- #include <cstdio>
- #include <algorithm>
-
- #define M_MAX 3020
- #define N_MAX 110
-
- struct state {
- bool isLine;
- int num;
- } list[M_MAX*2], t;
-
- int n, m, map[M_MAX][M_MAX], nList[M_MAX][N_MAX], nFull[M_MAX], rNum[M_MAX], gList[M_MAX][N_MAX], gFull[M_MAX], rGroup[M_MAX], minNum, selected[M_MAX];
- bool chk[M_MAX][M_MAX];
-
- int getScore(state &x){
- return x.isLine?rNum[x.num]:rGroup[x.num];
- }
-
- bool compare(state &x, state &y){
- return getScore(x) < getScore(y);
- }
-
- void process(state &x, bool recur){
- int i, d;
- bool find=0;
- if(x.isLine){
- for(i=0; i<nFull[x.num]; i++){
-
- if(chk[x.num][nList[x.num][i]]){
- chk[x.num][nList[x.num][i]] = 0;
- rGroup[nList[x.num][i]]--;
- if(!find) {
- selected[nList[x.num][i]] = x.num;
- d = nList[x.num][i];
- rGroup[d] = n+1;
- find = 1;
- }
- }
- }
- for(i=0; i<gFull[d]; i++)
- if(chk[gList[d][i]][d])
- chk[gList[d][i]][d] = 0;
- rNum[x.num] = n+1;
- } else {
- for(i=0; i<gFull[x.num]; i++){
- if(chk[gList[x.num][i]][x.num]){
- chk[gList[x.num][i]][x.num] = 0;
- rNum[gList[x.num][i]]--;
- if(!find) {
- selected[x.num] = gList[x.num][i];
- d = gList[x.num][i];
- rNum[d] = n+1;
- find = 1;
- }
- }
- }
- for(i=0; i<nFull[d]; i++)
- if(chk[d][nList[d][i]])
- chk[d][nList[d][i]] = 0;
- rGroup[x.num] = n+1;
- }
- }
-
- void getMin(){
- minNum = 0;
-
- int i;
- for(i=1; i<2*m; i++)
- if(getScore(list[i]) < getScore(list[minNum]))
- minNum = i;
- }
-
- int main(){
- scanf("%d%d", &m, &n);
-
- int i, j, t;
- for(i=1; i<=m; i++){
- for(j=1; j<=n; j++){
- scanf("%d", &t);
- if(!map[t][i]){
- map[t][i] = j;
- chk[t][i] = 1;
- nList[t][nFull[t]++] = i;
- gList[i][gFull[i]++] = t;
- }
- }
- }
-
- for(i=0; i<m; i++){
- rGroup[i+1] = gFull[i+1];
- list[i*2].isLine = 0;
- list[i*2].num = i+1;
- rNum[i+1] = nFull[i+1];
- list[i*2+1].isLine = 1;
- list[i*2+1].num = i+1;
- }
-
- getMin();
- while(getScore(list[minNum]) <= n){
- process(list[minNum], 0);
- getMin();
- }
-
- for(i=1; i<=m; i++)
- printf("%d %d\n", selected[i], map[selected[i]][i]);
-
- return 0;
- }
#include <cstdio>
#include <algorithm>
#define M_MAX 3020
#define N_MAX 110
struct state {
bool isLine;
int num;
} list[M_MAX*2], t;
int n, m, map[M_MAX][M_MAX], nList[M_MAX][N_MAX], nFull[M_MAX], rNum[M_MAX], gList[M_MAX][N_MAX], gFull[M_MAX], rGroup[M_MAX], minNum, selected[M_MAX];
bool chk[M_MAX][M_MAX];
int getScore(state &x){
return x.isLine?rNum[x.num]:rGroup[x.num];
}
bool compare(state &x, state &y){
return getScore(x) < getScore(y);
}
void process(state &x, bool recur){
int i, d;
bool find=0;
if(x.isLine){
for(i=0; i<nFull[x.num]; i++){
//printf("_%d %d\n", x.num, nList[x.num][i]);
if(chk[x.num][nList[x.num][i]]){
chk[x.num][nList[x.num][i]] = 0;
rGroup[nList[x.num][i]]--;
if(!find) {
selected[nList[x.num][i]] = x.num;
d = nList[x.num][i];
rGroup[d] = n+1;
find = 1;
}
}
}
for(i=0; i<gFull[d]; i++)
if(chk[gList[d][i]][d])
chk[gList[d][i]][d] = 0;
rNum[x.num] = n+1;
} else {
for(i=0; i<gFull[x.num]; i++){
if(chk[gList[x.num][i]][x.num]){
chk[gList[x.num][i]][x.num] = 0;
rNum[gList[x.num][i]]--;
if(!find) {
selected[x.num] = gList[x.num][i];
d = gList[x.num][i];
rNum[d] = n+1;
find = 1;
}
}
}
for(i=0; i<nFull[d]; i++)
if(chk[d][nList[d][i]])
chk[d][nList[d][i]] = 0;
rGroup[x.num] = n+1;
}
}
void getMin(){
minNum = 0;
int i;
for(i=1; i<2*m; i++)
if(getScore(list[i]) < getScore(list[minNum]))
minNum = i;
}
int main(){
scanf("%d%d", &m, &n);
int i, j, t;
for(i=1; i<=m; i++){
for(j=1; j<=n; j++){
scanf("%d", &t);
if(!map[t][i]){
map[t][i] = j;
chk[t][i] = 1;
nList[t][nFull[t]++] = i;
gList[i][gFull[i]++] = t;
}
}
}
for(i=0; i<m; i++){
rGroup[i+1] = gFull[i+1];
list[i*2].isLine = 0;
list[i*2].num = i+1;
rNum[i+1] = nFull[i+1];
list[i*2+1].isLine = 1;
list[i*2+1].num = i+1;
}
getMin();
while(getScore(list[minNum]) <= n){
process(list[minNum], 0);
getMin();
}
for(i=1; i<=m; i++)
printf("%d %d\n", selected[i], map[selected[i]][i]);
return 0;
}
';
print "
3. Bracket (by gs12117)
";
print'
- #include<stdio.h>
- int n;
- int code[1010];
- int codeb[2010];
- char str[2010];
- int f(int a,int b){
- if(a==b)return 1;
- int i,j=0,k=0;
- for(i=a;i<b;i++){
- j+=codeb[i];
- k+=codeb[i]*i;
- }
- if(j!=(b-a)/2)return 0;
- if(k!=j*(a+b)/2)return 0;
- for(i=a+1;i<=(a+b)/2;i++){
- if(codeb[i]){
- codeb[i]--;
- if(f(a+1,2*i-a-1)==1&&f(2*i-a,b)==1){
- str[a]='[';
- str[2*i-a-1]=']';
- codeb[i]++;
- return 1;
- }
- codeb[i]++;
- }
- }
- return 0;
- }
- int main(){
- int i,j;
- scanf("%d",&n);
- for(i=0;i<n;i++){
- scanf("%d",&code[i]);
- codeb[code[i]]++;
- }
- if(f(0,2*n)==0)printf("ERR");
- printf("%s",str);
- }
#include<stdio.h>
int n;
int code[1010];
int codeb[2010];
char str[2010];
int f(int a,int b){
if(a==b)return 1;
int i,j=0,k=0;
for(i=a;i<b;i++){
j+=codeb[i];
k+=codeb[i]*i;
}
if(j!=(b-a)/2)return 0;
if(k!=j*(a+b)/2)return 0;
for(i=a+1;i<=(a+b)/2;i++){
if(codeb[i]){
codeb[i]--;
if(f(a+1,2*i-a-1)==1&&f(2*i-a,b)==1){
str[a]='[';
str[2*i-a-1]=']';
codeb[i]++;
return 1;
}
codeb[i]++;
}
}
return 0;
}
int main(){
int i,j;
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%d",&code[i]);
codeb[code[i]]++;
}
if(f(0,2*n)==0)printf("ERR");
printf("%s",str);
}
';
print "
�� �ع��� �м��Ͽ� ������ �����սô�. ���� ��ϵǸ� �����ϼ���!!";
print '';
?>