������ �غ����� ���ǰ��翡�� ������ �ֽñ� �ٶ��ϴ�.
";
print "
���� : o - Accepted, x - Wrong Answer, s - signal out(runtime error), t - Time Limit Exceeded
";
print "[ Winner!! ] (1000pts)
: gs12117
";
print "
Gold Medal List!! (over 983pts)
: gs12117, dijkstra
";
print "
Silver Medal List (over 720pts)
: ainta, gs12120, gs12065, gs12006
";
print "
Bronze Medal List (over 241pts)
: gs13068, gs11028, gs11008, admin
";
print "�� ���
";
$dir="/var/www/bbs/moi/17th/";
$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(3600-(time()-$ftime))%60;
if(time()-$ftime <= 18600) $iuser[$number] = "".$iuser[$number]."(".$hh."h".$mm."m)";
else $iuser[$number] = "".$iuser[$number]."(Done)";
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 += 16.67+($j*0.001);
else if($j==3) $score += 12.5+($j*0.001);
else if($j==4) $score += 25+($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
|
Wolf&Sheep (250)
|
Hard Disk (250)
|
Wide LCD_TV (250)
|
The War (250)
|
'.($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. Bingo (by vega4792)";
print '- #include<stdio.h>
-
- int m[7][7],i,j,k,l,cnt;
-
- main()
- {
- for(i=1;i<=5;i++)
- for(j=1;j<=5;j++)
- scanf("%d",&m[i][j]);
-
- for(l=1;l<=25;l++)
- {
- scanf("%d",&k);
- for(i=1;i<=5;i++)
- for(j=1;j<=5;j++)
- if (m[i][j]==k)
- {
- m[i][j]=0;
- m[i][0]++;
- m[0][j]++;
- if (i==j)
- m[0][0]++;
- if (i+j==6)
- m[0][6]++;
- }
- cnt=0;
- for(i=0;i<=6;i++)
- if(m[0][i]==5)
- cnt++;
- for(i=1;i<=5;i++)
- if(m[i][0]==5)
- cnt++;
-
- if(cnt>=3)
- {
- printf("%d\n",l);
- break;
- }
- }
- }
#include<stdio.h>
int m[7][7],i,j,k,l,cnt;
main()
{
for(i=1;i<=5;i++)
for(j=1;j<=5;j++)
scanf("%d",&m[i][j]);
for(l=1;l<=25;l++)
{
scanf("%d",&k);
for(i=1;i<=5;i++)
for(j=1;j<=5;j++)
if (m[i][j]==k)
{
m[i][j]=0;
m[i][0]++;
m[0][j]++;
if (i==j)
m[0][0]++;
if (i+j==6)
m[0][6]++;
}
cnt=0;
for(i=0;i<=6;i++)
if(m[0][i]==5)
cnt++;
for(i=1;i<=5;i++)
if(m[i][0]==5)
cnt++;
if(cnt>=3)
{
printf("%d\n",l);
break;
}
}
}
';
print "
2. Number Sum (by gs11028) ";
print '- #include <stdio.h>
- int n;
- int a[15];
- int b[15];
- bool flag=0;
- bool chk[15];
- void proc(int k, int ans)
- {
- if(k==n)
- {
- if(ans == 0)
- flag = 1;
- return;
- }
- int i;
- for(i=1;i<=n;i++)
- {
- if(chk[i] == 1)
- continue;
- if(ans < i*a[k])
- continue;
- chk[i] = 1;
- b[k] = i;
- proc(k+1,ans-i*a[k]);
- if(flag == 1)
- break;
- chk[i] = 0;
- }
- return;
- }
- int main()
- {
- int f,tmp[15][15]={0},i,j;
- scanf("%d %d",&n,&f);
- tmp[0][0] = 1;
- for(i=1;i<n;i++)
- {
- for(j=0;j<=i;j++)
- {
- if(j==0)
- tmp[i][j] = 1;
- else
- tmp[i][j] = tmp[i-1][j-1] + tmp[i-1][j];
- }
- }
- for(i=0;i<n;i++)
- a[i] = tmp[n-1][i];
- proc(0,f);
- for(i=0;i<n;i++)
- {
- printf("%d ",b[i]);
- }
- return 0;
- }
#include <stdio.h>
int n;
int a[15];
int b[15];
bool flag=0;
bool chk[15];
void proc(int k, int ans)
{
if(k==n)
{
if(ans == 0)
flag = 1;
return;
}
int i;
for(i=1;i<=n;i++)
{
if(chk[i] == 1)
continue;
if(ans < i*a[k])
continue;
chk[i] = 1;
b[k] = i;
proc(k+1,ans-i*a[k]);
if(flag == 1)
break;
chk[i] = 0;
}
return;
}
int main()
{
int f,tmp[15][15]={0},i,j;
scanf("%d %d",&n,&f);
tmp[0][0] = 1;
for(i=1;i<n;i++)
{
for(j=0;j<=i;j++)
{
if(j==0)
tmp[i][j] = 1;
else
tmp[i][j] = tmp[i-1][j-1] + tmp[i-1][j];
}
}
for(i=0;i<n;i++)
a[i] = tmp[n-1][i];
proc(0,f);
for(i=0;i<n;i++)
{
printf("%d ",b[i]);
}
return 0;
}
';
print "
Here is another solution (by cubelover) ";
print '- #include<algorithm>
- #include<cstdio>
-
- using namespace std;
-
- main()
- {
- int i,j,n,k;
- int d[10][10];
- scanf("%d%d",&n,&k);
- for(i=0;i<n;i++)d[0][i]=i+1;
- do
- {
- for(i=1;i<n;i++)
- {
- for(j=0;j<n-i;j++)
- d[i][j]=d[i-1][j]+d[i-1][j+1];
- }
- if(d[n-1][0]==k)
- break;
- }while(next_permutation(d[0],d[0]+n));
- for(i=0;i<n;i++)printf("%d ",d[0][i]);
- }
#include<algorithm>
#include<cstdio>
using namespace std;
main()
{
int i,j,n,k;
int d[10][10];
scanf("%d%d",&n,&k);
for(i=0;i<n;i++)d[0][i]=i+1;
do
{
for(i=1;i<n;i++)
{
for(j=0;j<n-i;j++)
d[i][j]=d[i-1][j]+d[i-1][j+1];
}
if(d[n-1][0]==k)
break;
}while(next_permutation(d[0],d[0]+n));
for(i=0;i<n;i++)printf("%d ",d[0][i]);
}
';
print "
3. Harvest (by gs11008)
";
print'
- #include<stdio.h>
- int n,x[2000],q[2000][2000];
- int max(int p,int q){
- return p>q?p:q;
- }
- int f(int a,int b){
- if(q[a][b]);
- else if(a==b){
- q[a][b]=x[a]*n;
- }
- else q[a][b]=max( f(a+1,b)+x[a]*(n-b+a), f(a,b-1)+x[b]*(n-b+a));
- return q[a][b];
- }
- int main(){
- int i;
- scanf("%d",&n);
- for(i=0;i<n;i++){
- scanf("%d",&x[i]);
- }
- printf("%d",f(0,n-1));
- }
#include<stdio.h>
int n,x[2000],q[2000][2000];
int max(int p,int q){
return p>q?p:q;
}
int f(int a,int b){
if(q[a][b]);
else if(a==b){
q[a][b]=x[a]*n;
}
else q[a][b]=max( f(a+1,b)+x[a]*(n-b+a), f(a,b-1)+x[b]*(n-b+a));
return q[a][b];
}
int main(){
int i;
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%d",&x[i]);
}
printf("%d",f(0,n-1));
}
';
print "
Here is another solution (by ainta) ";
print '- #include<stdio.h>
- int m(int a,int b){if(a>b)return a;return b;}
- int w[2002],i,j,n,D[2001][2001],s[2002];
- int main(){
- scanf("%d",&n);
- for(i=1;i<=n;i++){
- scanf("%d",&w[i]);
- s[i]=s[i-1]+w[i];}
- for(i=1;i<=n;i++)D[i][i]=w[i];
- for(i=1;i<n;i++){
- for(j=1;j<=n-i;j++){
- D[j][j+i]=m(D[j+1][j+i],D[j][j+i-1])+s[j+i]-s[j-1];}}
- printf("%d\n",D[1][n]);
- }
#include<stdio.h>
int m(int a,int b){if(a>b)return a;return b;}
int w[2002],i,j,n,D[2001][2001],s[2002];
int main(){
scanf("%d",&n);
for(i=1;i<=n;i++){
scanf("%d",&w[i]);
s[i]=s[i-1]+w[i];}
for(i=1;i<=n;i++)D[i][i]=w[i];
for(i=1;i<n;i++){
for(j=1;j<=n-i;j++){
D[j][j+i]=m(D[j+1][j+i],D[j][j+i-1])+s[j+i]-s[j-1];}}
printf("%d\n",D[1][n]);
}
';
print "
4. Cowboy (by admin)
";
print'- #include <stdio.h>
- #define MN 14
- #define _2N 8192
- #define max(a,b) (((a)>(b))?(a):(b))
- int n;
- double c[MN][MN][_2N], p[MN];
- bool ch[MN][MN][_2N];
- void input()
- {
- int i, j;
-
- scanf("%d", &n);
- for (i = 1; i <= n; i++) {
- scanf("%d", &j);
- p[i] = (double)j/100;
- }
- }
- double f(int k, int i, int S)
- {
- if (!(S&(1<<(k-1)))) return 0;
- if (!ch[k][i][S]) {
- int a, b, na, nb;
- char w[MN], wc;
- double G, m, re;
-
- for (b = i+1;; b++) {
- if (b > n) b = 1;
- if (S&(1<<(b-1))) {
- nb = b;
- break;
- }
- }
- G = 1;
- for (a = i;;) {
- if (S&(1<<(a-1))) {
- for (b = nb+1;;b++) {
- if (b > n) b = 1;
- if (S&(1<<(b-1))) {
- na = nb; nb = b;
- break;
- }
- }
- m = 0; wc = 0;
- for (b = a+1;;b++) {
- if (b > n) b = 1;
- if (b == a) break;
- if (S&(1<<(b-1))) {
- if (b != na) {
- re = f(a,na,S-(1<<(b-1)));
- if (m == re) w[++wc] = b;
- else if (m < re) {
- m = re;
- wc = 1; w[wc] = b;
- }
- }
- else {
- re = f(a,nb,S-(1<<(b-1)));
- if (m == re) w[++wc] = b;
- else if (m < re) {
- m = re;
- wc = 1; w[wc] = b;
- }
- }
- }
- }
- for (int j = 1; j <= wc; j++) {
- b = w[j];
- if (S&(1<<(b-1))) {
- if (b != na) {
- re = f(a,na,S-(1<<(b-1)));
- if (m == re)
- c[k][i][S] += G*p[a]*f(k,na,S-(1<<(b-1)))/wc;
- }
- else {
- re = f(a,nb,S-(1<<(b-1)));
- if (m == re)
- c[k][i][S] += G*p[a]*f(k,nb,S-(1<<(b-1)))/wc;
- }
- }
- }
- G *= 1-p[a];
- }
- if (++a > n) a = 1;
- if (a == i) break;
- }
- if (1-G == 0) c[k][i][S] = 0;
- else c[k][i][S] /= 1-G;
- ch[k][i][S] = 1;
- }
- return c[k][i][S];
- }
- void process()
- {
- int i;
-
- for (i = 1; i <= n; i++)
- c[i][i][1<<(i-1)] = ch[i][i][1<<(i-1)] = 1;
- for (i = 1; i <= n; i++)
- printf("%.2lf ", f(i,1,(1<<n)-1)*100);
- }
- int main()
- {
- input();
- process();
- fcloseall();
- return 0;
- }
#include <stdio.h>
#define MN 14
#define _2N 8192
#define max(a,b) (((a)>(b))?(a):(b))
int n;
double c[MN][MN][_2N], p[MN];
bool ch[MN][MN][_2N];
void input()
{
int i, j;
scanf("%d", &n);
for (i = 1; i <= n; i++) {
scanf("%d", &j);
p[i] = (double)j/100;
}
}
double f(int k, int i, int S)
{
if (!(S&(1<<(k-1)))) return 0;
if (!ch[k][i][S]) {
int a, b, na, nb;
char w[MN], wc;
double G, m, re;
for (b = i+1;; b++) {
if (b > n) b = 1;
if (S&(1<<(b-1))) {
nb = b;
break;
}
}
G = 1;
for (a = i;;) {
if (S&(1<<(a-1))) {
for (b = nb+1;;b++) {
if (b > n) b = 1;
if (S&(1<<(b-1))) {
na = nb; nb = b;
break;
}
}
m = 0; wc = 0;
for (b = a+1;;b++) {
if (b > n) b = 1;
if (b == a) break;
if (S&(1<<(b-1))) {
if (b != na) {
re = f(a,na,S-(1<<(b-1)));
if (m == re) w[++wc] = b;
else if (m < re) {
m = re;
wc = 1; w[wc] = b;
}
}
else {
re = f(a,nb,S-(1<<(b-1)));
if (m == re) w[++wc] = b;
else if (m < re) {
m = re;
wc = 1; w[wc] = b;
}
}
}
}
for (int j = 1; j <= wc; j++) {
b = w[j];
if (S&(1<<(b-1))) {
if (b != na) {
re = f(a,na,S-(1<<(b-1)));
if (m == re)
c[k][i][S] += G*p[a]*f(k,na,S-(1<<(b-1)))/wc;
}
else {
re = f(a,nb,S-(1<<(b-1)));
if (m == re)
c[k][i][S] += G*p[a]*f(k,nb,S-(1<<(b-1)))/wc;
}
}
}
G *= 1-p[a];
}
if (++a > n) a = 1;
if (a == i) break;
}
if (1-G == 0) c[k][i][S] = 0;
else c[k][i][S] /= 1-G;
ch[k][i][S] = 1;
}
return c[k][i][S];
}
void process()
{
int i;
for (i = 1; i <= n; i++)
c[i][i][1<<(i-1)] = ch[i][i][1<<(i-1)] = 1;
for (i = 1; i <= n; i++)
printf("%.2lf ", f(i,1,(1<<n)-1)*100);
}
int main()
{
input();
process();
fcloseall();
return 0;
}
';
print "
5. Make Permutation (by dijkstra)
";
print'- #include <stdio.h>
- #define MN 100001
-
- int n, a, b;
- int d[MN], t[MN];
- int main()
- {
- int i, p, k;
-
- scanf("%d%d%d", &n, &a, &b);
- if (a+b-1 <= n && n <= (long long)a*b) {
- for (i = 1; i <= n; i++) d[i] = n+1-i;
- k = p = n;
- while (k-(a-1) > b) {
- k -= a-1; p -= a;
- for (i = 1; i <= a; i++) t[p+i] = d[p+a+1-i];
- for (i = 1; i <= a; i++) d[p+i] = t[p+i];
- }
- a = k-b+1; p -= a;
- for (i = 1; i <= a; i++) t[p+i] = d[p+a+1-i];
- for (i = 1; i <= a; i++) d[p+i] = t[p+i];
- for (i = 1; i <= n; i++)
- printf("%d ", d[i]);
- }
- else
- printf("-1");
- return 0;
- }
#include <stdio.h>
#define MN 100001
int n, a, b;
int d[MN], t[MN];
int main()
{
int i, p, k;
scanf("%d%d%d", &n, &a, &b);
if (a+b-1 <= n && n <= (long long)a*b) {
for (i = 1; i <= n; i++) d[i] = n+1-i;
k = p = n;
while (k-(a-1) > b) {
k -= a-1; p -= a;
for (i = 1; i <= a; i++) t[p+i] = d[p+a+1-i];
for (i = 1; i <= a; i++) d[p+i] = t[p+i];
}
a = k-b+1; p -= a;
for (i = 1; i <= a; i++) t[p+i] = d[p+a+1-i];
for (i = 1; i <= a; i++) d[p+i] = t[p+i];
for (i = 1; i <= n; i++)
printf("%d ", d[i]);
}
else
printf("-1");
return 0;
}
';
print "
�� �ع��� �м��Ͽ� ������ �����սô�. ���� ��ϵǸ� �����ϼ���!!";
print '';
?>
*/