";
print " �Ʒ� ������ ������ ��� �п� ���� ����Դϴ�.
�����ڵ� ��� ���ϵ帳�ϴ�. �����ϼ̽��ϴ�. ������ �غ����� ���ǰ��翡�� ������ �ֽñ� �ٶ��ϴ�.
";
print "
���� : o - Accepted, x - Wrong Answer, s - signal out(runtime error), t - Time Limit Exceeded
";
print "3ȸ ���� �ڴ���(Chick)!! ���
";
print "Gold Medal : ainta, august14, dijkstra, gs10087, gs12065, sujin, teram, vega4792, wclee2265, zlzmsrhak56
";
print "Silver Medal : X
";
print "Bronze Medal : pl0892029, nobe0716, commaster0, gs11059, gshs281301, ryanch1, gs12059, gs11008, gs10107, k5888200
";
$dir="/var/www/bbs/moi/3stchk/";
$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).'';
$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
|
Odd Number(250)
|
Dice Game(250)
|
A Party(250)
|
Number Card(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!!
1. Odd Number (by ainta)";
print '- #include <stdio.h> // Mathmatical Solution
- long long a;
- int main(){
- scanf("%lld",&a);
- printf("%lld %lld\n",(a-1)*(a-1)/2+1,(a+1)*(a+1)/2-1);
- }
#include <stdio.h> // Mathmatical Solution
long long a;
int main(){
scanf("%lld",&a);
printf("%lld %lld\n",(a-1)*(a-1)/2+1,(a+1)*(a+1)/2-1);
}
';
print "
2. Dice Game (by dijkstra)";
print '- #include<stdio.h>
- int b[1010],d[1010],p;
- main()
- {
- int n,m,i;
- scanf("%d%d",&n,&m);
- for(i=1;i<=n;i++)
- scanf("%d",&b[i]);
- for(p=i=1;p<n&&i<=m;i++)
- {
- scanf("%d",&d[i]);
- p+=d[i]+b[p+d[i]];
- }
- printf("%d",i-1);
- }
#include<stdio.h>
int b[1010],d[1010],p;
main()
{
int n,m,i;
scanf("%d%d",&n,&m);
for(i=1;i<=n;i++)
scanf("%d",&b[i]);
for(p=i=1;p<n&&i<=m;i++)
{
scanf("%d",&d[i]);
p+=d[i]+b[p+d[i]];
}
printf("%d",i-1);
}
';
print "
3. A Part(by vega4792)";
print '- #include<stdio.h>
- int n, m, a, b, visit[501], g[501][501], i, j, cnt;
- main()
- {
- scanf("%d%d",&n,&m);
- for(i=1; i<=m; i++)
- {
- scanf("%d%d",&a,&b);
- g[a][b]=1;
- g[b][a]=1;
- }
- for(i=2; i<=n; i++)
- if(g[1][i])
- {
- visit[i]=1;
- for(j=1; j<=n; j++)
- {
- if(j==i) continue;
- if(g[i][j]) visit[j]=1;
- }
- }
- for(i=2; i<=n; i++)
- if(visit[i]) cnt++;
- printf("%d",cnt);
- }
-
#include<stdio.h>
int n, m, a, b, visit[501], g[501][501], i, j, cnt;
main()
{
scanf("%d%d",&n,&m);
for(i=1; i<=m; i++)
{
scanf("%d%d",&a,&b);
g[a][b]=1;
g[b][a]=1;
}
for(i=2; i<=n; i++)
if(g[1][i])
{
visit[i]=1;
for(j=1; j<=n; j++)
{
if(j==i) continue;
if(g[i][j]) visit[j]=1;
}
}
for(i=2; i<=n; i++)
if(visit[i]) cnt++;
printf("%d",cnt);
}
';
print "
Here is another solution 3. A Part(by nobe0716)";
print '- #include <stdio.h>
- #include <stdlib.h>
- #include <vector>
- #include <queue>
- using namespace std;
-
-
-
- #ifdef _TEST
- #include "windows.h"
- #include "conio.h"
- #endif //_TEST
-
- struct _Node
- {
- int nIdx;
- int nDepth;
- };
-
- const static int N_MAX = 601;
- int n, m;
-
- queue<_Node> q;
- vector<int> vecMap[N_MAX];
- vector<int> vecVisitor;
-
- int nHashInvited[N_MAX];
-
- int main(int argc, char **argv)
- {
- #ifdef _TEST
- freopen("input.txt", "r", stdin);
- #endif // _TEST
- int nCnt = 0;
-
- scanf("%d %d", &n, &m);
- #ifdef _TEST
- int t = GetTickCount();
- #endif // _TEST
-
- for ( int i = 0 ; i < m ; ++i )
- {
- int nFrom, nTo;
- scanf("%d %d", &nFrom, &nTo );
- vecMap[nFrom].push_back( nTo );
- vecMap[nTo].push_back( nFrom );
- }
- _Node stNode;
- stNode.nIdx = 1;
- stNode.nDepth = 0;
-
- _Node stNodeTemp;
- q.push( stNode );
- while ( !q.empty() )
- {
- _Node stNodeTemp = q.front();
- q.pop();
-
- nHashInvited[ stNodeTemp.nIdx ] = 1;
-
- if ( stNodeTemp.nDepth >= 2 )
- continue;
-
- for ( int i = 0 ; i < vecMap[ stNodeTemp.nIdx ].size() ; ++i )
- {
- _Node stNodeBranch;
- stNodeBranch.nIdx = vecMap[ stNodeTemp.nIdx ].at(i);
- stNodeBranch.nDepth = stNodeTemp.nDepth + 1;
-
- if ( nHashInvited[ stNodeBranch.nIdx ] == 0 )
- q.push( stNodeBranch );
- }
- }
-
- for ( int i = 0 ; i < N_MAX ; ++i )
- if ( nHashInvited[i] == 1)
- ++nCnt;
- printf("%d\n", nCnt - 1 );
-
- #ifdef _TEST
- printf("\tRunTime = %d\n", GetTickCount() - t );
- getch();
- #endif // _TEST
- return 0;
- }
#include <stdio.h>
#include <stdlib.h>
#include <vector>
#include <queue>
using namespace std;
//#define _TEST
#ifdef _TEST
#include "windows.h"
#include "conio.h"
#endif //_TEST
struct _Node
{
int nIdx;
int nDepth;
};
const static int N_MAX = 601;
int n, m;
queue<_Node> q;
vector<int> vecMap[N_MAX];
vector<int> vecVisitor;
int nHashInvited[N_MAX];
int main(int argc, char **argv)
{
#ifdef _TEST
freopen("input.txt", "r", stdin);
#endif // _TEST
int nCnt = 0;
scanf("%d %d", &n, &m);
#ifdef _TEST
int t = GetTickCount();
#endif // _TEST
for ( int i = 0 ; i < m ; ++i )
{
int nFrom, nTo;
scanf("%d %d", &nFrom, &nTo );
vecMap[nFrom].push_back( nTo );
vecMap[nTo].push_back( nFrom );
}
_Node stNode;
stNode.nIdx = 1;
stNode.nDepth = 0;
_Node stNodeTemp;
q.push( stNode );
while ( !q.empty() )
{
_Node stNodeTemp = q.front();
q.pop();
nHashInvited[ stNodeTemp.nIdx ] = 1;
if ( stNodeTemp.nDepth >= 2 )
continue;
for ( int i = 0 ; i < vecMap[ stNodeTemp.nIdx ].size() ; ++i )
{
_Node stNodeBranch;
stNodeBranch.nIdx = vecMap[ stNodeTemp.nIdx ].at(i);
stNodeBranch.nDepth = stNodeTemp.nDepth + 1;
if ( nHashInvited[ stNodeBranch.nIdx ] == 0 )
q.push( stNodeBranch );
}
}
for ( int i = 0 ; i < N_MAX ; ++i )
if ( nHashInvited[i] == 1)
++nCnt;
printf("%d\n", nCnt - 1 );
#ifdef _TEST
printf("\tRunTime = %d\n", GetTickCount() - t );
getch();
#endif // _TEST
return 0;
}
';
print "
4. Number Card(by zlzmsrhak56)";
print '- #include<stdio.h> // using set
- #include<set>
- using namespace std;
- int i,n,k;
- int d[15];
- bool check[15];
- set<int> numbers;
- void aa(int su,int lev)
- {
- int i;
- if(lev==k){
- numbers.insert(su);
- return;
- }
- for(i=0;i<n;i++){
- if(check[i])continue;
- check[i]=true;
- if(d[i]<10)aa(su*10+d[i],lev+1);
- else aa(su*100+d[i],lev+1);
- check[i]=false;
- }
- }
- int main()
- {
- scanf("%d%d",&n,&k);
- for(i=0;i<n;i++)scanf("%d",d+i);
- aa(0,0);
- printf("%d",numbers.size());
- return 0;
- }
#include<stdio.h> // using set
#include<set>
using namespace std;
int i,n,k;
int d[15];
bool check[15];
set<int> numbers;
void aa(int su,int lev)
{
int i;
if(lev==k){
numbers.insert(su);
return;
}
for(i=0;i<n;i++){
if(check[i])continue;
check[i]=true;
if(d[i]<10)aa(su*10+d[i],lev+1);
else aa(su*100+d[i],lev+1);
check[i]=false;
}
}
int main()
{
scanf("%d%d",&n,&k);
for(i=0;i<n;i++)scanf("%d",d+i);
aa(0,0);
printf("%d",numbers.size());
return 0;
}
';
print "
Here is another solution 4. Number Card(by august14)";
print '- #include <iostream>
- #include <string>
- #include <set> //using set and string
- using namespace std;
-
- int N,K,C[11]; string NUM[11]; set<string> S;
-
- void go(int a, string s)
- {
- if (a == K) S.insert(s);
- else{
- int i;
-
- for (i=0;i<N;i++) if (!C[i]){
- C[i] = 1; go(a+1,s+NUM[i]); C[i] = 0;
- }
- }
- }
-
- int main()
- {
- int i;
-
- cin >> N >> K;
- for (i=0;i<N;i++) cin >> NUM[i];
-
- go(0,"");
-
- cout << S.size();
-
- return 0;
- }
#include <iostream>
#include <string>
#include <set> //using set and string
using namespace std;
int N,K,C[11]; string NUM[11]; set<string> S;
void go(int a, string s)
{
if (a == K) S.insert(s);
else{
int i;
for (i=0;i<N;i++) if (!C[i]){
C[i] = 1; go(a+1,s+NUM[i]); C[i] = 0;
}
}
}
int main()
{
int i;
cin >> N >> K;
for (i=0;i<N;i++) cin >> NUM[i];
go(0,"");
cout << S.size();
return 0;
}
';
print "�� �ع����� �м��Ͽ� ������ �����սô�. �Խõ� �ַ���� ������ ������ Discuss Board�� �ۼ��� �ֽø� ����� �帳�ϴ�.";
print '';
?>