";
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 '- #include <stdio.h>
-
- int main()
- {
- char S[10001]={0,};
- int koi, ioi;
- int i;
-
- scanf("%s", S);
-
- koi=ioi=0;
- i=2;
- while(S[i]){
- if(S[i-1]=='O' && S[i]=='I'){
- S[i-2]=='I'?ioi++:(S[i-2]=='K'?koi++:0);
- }
-
- i++;
- }
-
- printf("%d\n%d\n", koi, ioi);
- return 0;
- }
-
#include <stdio.h>
//by byeonbi
int main()
{
char S[10001]={0,};
int koi, ioi;
int i;
scanf("%s", S);
koi=ioi=0;
i=2;
while(S[i]){
if(S[i-1]=='O' && S[i]=='I'){
S[i-2]=='I'?ioi++:(S[i-2]=='K'?koi++:0);
}
i++;
}
printf("%d\n%d\n", koi, ioi);
return 0;
}
';
print "
Here is another solution 1. KOI&IOI (by august14)";
print '- #include <stdio.h>
- #include <string.h>
-
- char str[10101];
- int l,koi,ioi;
-
- int main()
- {
- int i;
-
- scanf ("%s",str);
- l = strlen(str);
- for (i=2;i<l;i++){
- if (str[i-1] == 'O' && str[i] == 'I'){
- if (str[i-2] == 'K') koi++;
- if (str[i-2] == 'I') ioi++;
- i++;
- }
- }
- printf ("%d\n%d\n",koi,ioi);
-
- return 0;
- }
-
-
#include <stdio.h>
#include <string.h>
//by august14
char str[10101];
int l,koi,ioi;
int main()
{
int i;
scanf ("%s",str);
l = strlen(str);
for (i=2;i<l;i++){
if (str[i-1] == 'O' && str[i] == 'I'){
if (str[i-2] == 'K') koi++;
if (str[i-2] == 'I') ioi++;
i++;
}
}
printf ("%d\n%d\n",koi,ioi);
return 0;
}
';
print "
[Problem 2]
�� ������ TLE�� �����ؾ� �մϴ�. �� 21���� ����� ���ؾ��ϹǷ� n���� �������縦 �ϸ� TLE�� ��ϴ�. sqrt(n)������ �����Ͽ� ��� ����� ���ϴ� ����� ����ϴ� �Ͱ�, �ߺ��� ���Ҹ� ó���ϴ� ���� �����Դϴ�. ������ �ع��� ��� STL�� set�� Ȱ���Ͽ� �ߺ��� ó���߽��ϴ�. �����ϼ���
2. Union(by teram)";
print '- #include<stdio.h>
- #include<set>
-
- using namespace std;
-
- set<int> S;
- set<int>::iterator iter;
-
- void insert_division(int n);
-
- int main() {
-
- int a,b,c;
-
- scanf("%d %d %d", &a, &b, &c);
-
- insert_division(a);
- insert_division(b);
- insert_division(c);
-
- for(iter=S.begin() ; iter!=S.end() ; iter++)
- printf("%d ", *iter);
- printf("\n");
-
- return 0;
- }
-
- void insert_division(int n) {
-
- int i;
-
- for(i=1 ; i*i<=n ; i++) {
- if(n%i==0) {
- S.insert(i);
- if(i*i!=n)
- S.insert(n/i);
- }
- }
-
- return;
- }
-
#include<stdio.h>
#include<set>
// by tream
using namespace std;
set<int> S;
set<int>::iterator iter;
void insert_division(int n);
int main() {
int a,b,c;
scanf("%d %d %d", &a, &b, &c);
insert_division(a);
insert_division(b);
insert_division(c);
for(iter=S.begin() ; iter!=S.end() ; iter++)
printf("%d ", *iter);
printf("\n");
return 0;
}
void insert_division(int n) {
int i;
for(i=1 ; i*i<=n ; i++) {
if(n%i==0) {
S.insert(i);
if(i*i!=n)
S.insert(n/i);
}
}
return;
}
';
print "
Here is another solution 2. Union (by august14)";
print '- #include <stdio.h>
- #include <set>
- using namespace std;
-
- set<int> S;
-
- int main()
- {
- int i,j,k;
-
- for (k=0;k<3;k++){
- scanf ("%d",&j);
- for (i=1;i*i<=j;i++){
- if (j % i == 0){
- S.insert(j/i);
- S.insert(i);
- }
- }
- }
-
- while (!S.empty()){
- printf ("%d ",*S.begin());
- S.erase(S.begin());
- }
- return 0;
- }
-
#include <stdio.h>
#include <set>
using namespace std;
//by august14
set<int> S;
int main()
{
int i,j,k;
for (k=0;k<3;k++){
scanf ("%d",&j);
for (i=1;i*i<=j;i++){
if (j % i == 0){
S.insert(j/i);
S.insert(i);
}
}
}
while (!S.empty()){
printf ("%d ",*S.begin());
S.erase(S.begin());
}
return 0;
}
';
print "
[Problem 3]
�� ������ ��Ȳ�� �ùķ��̼� �ϸ� ���� �ذ��� �� �ֽ��ϴ�. �־��� ��� ������ ��Ȯ�ϰ� �ùķ����� �ؼ� ó���ϸ� accepted�� ���� �� �ֽ��ϴ�. �ַ�� �����ϼ���~ 2������ �����մϴ�.
Here is solution 3. Card Game(by gs12065)";
print '- #include <stdio.h>
- #include <list>
-
- int n;
- bool chk[205];
- std::list < int > a, b;
-
- int main(){
- scanf("%d", &n);
-
- int last, i;
- for(i=0; i<n; i++){
- scanf("%d", &last);
- chk[last] = 1;
- }
- for(i=1; i<=2*n; i++){
- if(chk[i]) a.push_back(i);
- else b.push_back(i);
- }
-
- last = 0;
- std::list < int >::iterator it;
- while(1){
- for(it=a.begin(); it!=a.end(); it++){
- if(*it > last){
- last = *it;
- a.erase(it);
- break;
- }
- }
- if(a.size() == 0) break;
- else if(it == a.end()) last = 0;
-
- for(it=b.begin(); it!=b.end(); it++){
- if(*it > last){
- last = *it;
- b.erase(it);
- break;
- }
- }
- if(b.size() == 0) break;
- else if(it == b.end()) last = 0;
- }
-
- printf("%d\n%d\n", b.size(), a.size());
-
- return 0;
- }
-
#include <stdio.h>
#include <list>
// by gs12065
int n;
bool chk[205];
std::list < int > a, b;
int main(){
scanf("%d", &n);
int last, i;
for(i=0; i<n; i++){
scanf("%d", &last);
chk[last] = 1;
}
for(i=1; i<=2*n; i++){
if(chk[i]) a.push_back(i);
else b.push_back(i);
}
last = 0;
std::list < int >::iterator it;
while(1){
for(it=a.begin(); it!=a.end(); it++){
if(*it > last){
last = *it;
a.erase(it);
break;
}
}
if(a.size() == 0) break;
else if(it == a.end()) last = 0;
for(it=b.begin(); it!=b.end(); it++){
if(*it > last){
last = *it;
b.erase(it);
break;
}
}
if(b.size() == 0) break;
else if(it == b.end()) last = 0;
}
printf("%d\n%d\n", b.size(), a.size());
return 0;
}
';
print "
Here is another solution 3. Card Game (by dijkstra)";
print '- #include<stdio.h>
- int a[210],p1[210],p2[210], p=1;
- int main()
- {
- int n,i,j,t;
- scanf("%d",&n);
- for(i=0;i<n;i++) scanf("%d",&t), a[t]++;
- for(i=1;i<=2*n;i++)
- if(a[i]) p1[i]++,p1[0]++; else p2[i]++,p2[0]++;
- while(p1[0]&&p2[0])
- {
- while(p<=2*n+1&&!p1[p++]);
- if(p-1<=2*n) p1[p-1]=0, p1[0]--; else p=1;
- if(!p1[0]) break;
- while(p<=2*n+1&&!p2[p++]);
- if(p-1<=2*n) p2[p-1]=0, p2[0]--; else p=1;
- }
- printf("%d\n%d",p2[0],p1[0]);
- }
-
#include<stdio.h>
int a[210],p1[210],p2[210], p=1; // by dijkstra
int main()
{
int n,i,j,t;
scanf("%d",&n);
for(i=0;i<n;i++) scanf("%d",&t), a[t]++;
for(i=1;i<=2*n;i++)
if(a[i]) p1[i]++,p1[0]++; else p2[i]++,p2[0]++;
while(p1[0]&&p2[0])
{
while(p<=2*n+1&&!p1[p++]);
if(p-1<=2*n) p1[p-1]=0, p1[0]--; else p=1;
if(!p1[0]) break;
while(p<=2*n+1&&!p2[p++]);
if(p-1<=2*n) p2[p-1]=0, p2[0]--; else p=1;
}
printf("%d\n%d",p2[0],p1[0]);
}
';
print "
[Problem 4]
�� ������ TLE�� �����ؾ� �մϴ�. ������ ������ ���ڸ��� ���� �� ó���� �߿��մϴ�. 2���� �ַ�� �����մϴ�.
Here is solution 4. Find Constellation(by vega4792)";
print '- #include<stdio.h>
- #include<algorithm>
-
- struct _pos {
- int x, y;
- }star[211], all[1111];
-
- int m,n,x,y,i,j,k,gapx,gapy,cnt,flag;
-
- bool comp(_pos q, _pos w) {
- if (q.x==w.x) return q.y < w.y;
- else return q.x < w.x;
- }
-
- main()
- {
- scanf("%d",&m);
- for(i=0; i<m; i++)
- scanf("%d%d",&star[i].x,&star[i].y);
-
- scanf("%d",&n);
- for(i=0; i<n; i++)
- scanf("%d%d",&all[i].x,&all[i].y);
-
- std::sort(all,all+n,comp);
-
- for(i=0; i<n; i++)
- {
- gapx=all[i].x - star[0].x;
- gapy=all[i].y - star[0].y;
- cnt=1;
- flag=0;
- for(j=1; j<m; j++)
- {
- for(k=0; k<n; k++)
- {
- if(i==k) continue;
- if(star[j].x+gapx==all[k].x && star[j].y+gapy==all[k].y)
- {
- cnt++;
- break;
- }
- if(star[j].x+gapx < all[k].x) {
- flag=1;
- break;
- }
- }
- if(flag) break;
- }
- if(cnt==m)
- break;
- }
-
- printf("%d %d",gapx, gapy);
- }
-
#include<stdio.h>
#include<algorithm>
//by vega4792
struct _pos {
int x, y;
}star[211], all[1111];
int m,n,x,y,i,j,k,gapx,gapy,cnt,flag;
bool comp(_pos q, _pos w) {
if (q.x==w.x) return q.y < w.y;
else return q.x < w.x;
}
main()
{
scanf("%d",&m);
for(i=0; i<m; i++)
scanf("%d%d",&star[i].x,&star[i].y);
scanf("%d",&n);
for(i=0; i<n; i++)
scanf("%d%d",&all[i].x,&all[i].y);
std::sort(all,all+n,comp);
for(i=0; i<n; i++)
{
gapx=all[i].x - star[0].x;
gapy=all[i].y - star[0].y;
cnt=1;
flag=0;
for(j=1; j<m; j++)
{
for(k=0; k<n; k++)
{
if(i==k) continue;
if(star[j].x+gapx==all[k].x && star[j].y+gapy==all[k].y)
{
cnt++;
break;
}
if(star[j].x+gapx < all[k].x) {
flag=1;
break;
}
}
if(flag) break;
}
if(cnt==m)
break;
}
printf("%d %d",gapx, gapy);
}
';
print "
Here is another solution 4. Find Constellation (by august14)";
print '- #include <stdio.h>
- #include <algorithm>
- using namespace std;
- struct point{int x,y;}S[222],A[1111];
- bool cmp(const point& a, const point& b){return (a.y == b.y) ? a.x < b.x : a.y < b.y;}
- int N,M;
-
- int main()
- {
- int i,j,k;
-
- scanf ("%d",&N);
- for (i=0;i<N;i++) scanf ("%d %d",&S[i].x,&S[i].y);
- sort(S,S+N,cmp);
-
- scanf ("%d",&M);
- for (i=0;i<M;i++) scanf ("%d %d",&A[i].x,&A[i].y);
- sort(A,A+M,cmp);
-
- for (i=0;i<M;i++){
- j = 1;
- for (k=i+1;k<M&&j<N;k++){
- if (S[0].x-S[j].x == A[i].x-A[k].x &&
- S[0].y-S[j].y == A[i].y-A[k].y) j++;
- }
-
- if (j == N){
- printf ("%d %d\n",A[i].x-S[0].x,A[i].y-S[0].y);
- break;
- }
- }
-
- return 0;
- }
-
#include <stdio.h>
#include <algorithm>
using namespace std; //by august14
struct point{int x,y;}S[222],A[1111];
bool cmp(const point& a, const point& b){return (a.y == b.y) ? a.x < b.x : a.y < b.y;}
int N,M;
int main()
{
int i,j,k;
scanf ("%d",&N);
for (i=0;i<N;i++) scanf ("%d %d",&S[i].x,&S[i].y);
sort(S,S+N,cmp);
scanf ("%d",&M);
for (i=0;i<M;i++) scanf ("%d %d",&A[i].x,&A[i].y);
sort(A,A+M,cmp);
for (i=0;i<M;i++){
j = 1;
for (k=i+1;k<M&&j<N;k++){
if (S[0].x-S[j].x == A[i].x-A[k].x &&
S[0].y-S[j].y == A[i].y-A[k].y) j++;
}
if (j == N){
printf ("%d %d\n",A[i].x-S[0].x,A[i].y-S[0].y);
break;
}
}
return 0;
}
';
print "�� �ع��� �м��Ͽ� ������ �����սô�. ���� ��ϵǸ� �����ϼ���!!";
print '';
?>