답안 #73754

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
73754 2018-08-28T21:11:03 Z aleksam 저울 (IOI15_scales) C++14
56.4236 / 100
3 ms 620 KB
#include "scales.h"
#include <bits/stdc++.h>

using namespace std;


int T;

void init(int t) {
    t=T;
}

struct coin{
	int id;
};

int Max(int a, int b, int c){
	return getHeaviest(a, b, c);
}

int Min(int a, int b, int c){
	return getLightest(a, b, c);
}

int Mid(int a, int b, int c){
	return getMedian(a, b, c);
}
int cl, cr;
int l[3], r[3], u[6];

void stupid(){
	while(cl<2 && cr<3){
    	u[cl+cr]=Min(l[cl], l[cl+1], r[cr]);
    	if(u[cl+cr]==l[cl])cl++;
		else cr++;
	}
	while(cr<2 && cl<3){
		u[cl+cr]=Min(l[cl], r[cr+1], r[cr]);
    	if(u[cl+cr]==l[cl])cl++;
		else cr++;
	}
	//printf("cl=%d, cr=%d\n", cl, cr);
	if(cr==2 && cl==2){//+1
		u[5]=Max(l[2], r[2], l[1]);
		u[4]=21-u[0]-u[1]-u[2]-u[3]-u[5];
		answer(u);
		return;
	}
	if(cr==1 && cl==3){//0
		u[5]=r[2];
		u[4]=r[1];	
		answer(u);
		return;
	}
	if(cr==0 && cl==3){//0
		u[5]=r[2];
		u[4]=r[1];
		u[3]=r[0];	
		answer(u);
		return;
	}
	if(cl==1 && cr==3){//0
		u[5]=l[2];
		u[4]=l[1];	
		answer(u);
		return;
	}
	if(cl==0 && cr==3){//0
		u[5]=l[2];
		u[4]=l[1];
		u[3]=l[0];	
		answer(u);
		return;
	}
	answer(u);
}
void orderCoins() {
    /*
	int W[] = {1, 2, 3, 4, 5, 6};
    answer(W);*/
    cr=cl=0;
    l[0]=Min(1, 2, 3);
    l[2]=Max(1, 2, 3);
    l[1]=6-l[0]-l[2];
    r[0]=Min(4, 5, 6);
    r[2]=Max(4, 5, 6);
    r[1]=4+5+6-r[0]-r[2];
    //printf("l:%d %d %d r:%d %d %d\n", l[0], l[1], l[2], r[0], r[1], r[2]);
    int med=Mid(l[0], r[0], r[1]);
    if(med==l[0]){//max 7
		u[0]=r[0];
		u[1]=l[0];
		cl=1;
		cr=1;
		med=Mid(l[1], r[1], r[2]);//No 6
		if(med==l[1]){//+1
			u[2]=r[1];
			u[3]=l[1];
			cl=cr=2;
			stupid();
			return;
		}
		if(med==r[1]){//+1
			u[2]=l[1];
			cl=2;
			cr=1;
			med=Mid(l[2], r[1], r[2]);
			if(med==l[2]){
				u[3]=r[1];
				u[4]=l[2];
				u[5]=r[2];
			}
			if(med==r[1]){
				u[3]=l[2];
				u[4]=r[1];
				u[5]=r[2];
			}
			if(med==r[2]){
				u[3]=r[1];
				u[4]=r[2];
				u[5]=l[2];
			}
			answer(u);
			return;
		}
		if(med==r[2]){//0
			u[2]=r[1];
			u[3]=r[2];
			u[4]=l[1];
			u[5]=l[2];
			answer(u);
			return;
		}
		return;
	}
	if(med==r[0]){
		u[0]=l[0];
		cl=1;
		cr=0;
		med=Mid(l[1], r[0], r[1]);//No 6
		if(med==r[0]){//max 8
			u[1]=l[1];
			cl=2;
			cr=0;
			med=Mid(l[2], r[0], r[1]);//No7
			if(med==r[0]){
				u[2]=l[2];
				u[3]=r[0];
				u[4]=r[1];
				u[5]=r[2];
				answer(u);
				return;
			}
			if(med==r[1]){//+1
				u[2]=r[0];
				u[3]=r[1];
				cl=2;
				cr=2;
				stupid();
				return;
			}
			if(med==l[2]){//0
				u[2]=r[0];
				u[3]=l[2];
				u[4]=r[1];
				u[5]=r[2];
				answer(u);
				return;
			}
		}
		if(med==r[1]){//+1
			u[1]=r[0];
			u[2]=r[1];
			cr=2;
			cl=1;
			med=Mid(l[1], l[2], r[2]);
			if(med==l[1]){
				u[3]=r[2];
				u[4]=l[1];
				u[5]=l[2];
				answer(u);
				return;
			}
			if(med==l[2]){
				u[3]=l[1];
				u[4]=l[2];
				u[5]=r[2];
				answer(u);
				return;
			}
			if(med==r[2]){
				u[3]=l[1];
				u[4]=r[2];
				u[5]=l[2];
				answer(u);
				return;
			}
			return;
		}
		if(med==l[1]){//+1
			u[1]=r[0];
			u[2]=l[1];
			cl=2;
			cr=1;
			med=Mid(r[1], l[2], r[2]);
			if(med==r[1]){
				u[3]=l[2];
				u[4]=r[1];
				u[5]=r[2];
				answer(u);
				return;
			}
			if(med==r[2]){
				u[3]=r[1];
				u[4]=r[2];
				u[5]=l[2];
				answer(u);
				return;
			}
			if(med==l[2]){
				u[3]=r[1];
				u[4]=l[2];
				u[5]=r[2];
				answer(u);
				return;
			}
			return;
			return;
		}
		return;
	}
	if(med==r[1]){//+2
		u[0]=r[0];
		u[1]=r[1];
		cr=2;
		cl=0;
		med=getNextLightest(l[0], l[1], l[2], r[2]);
		if(med==l[2]){//0
			u[2]=l[0];
			u[3]=l[1];
			u[4]=r[2];
			u[5]=l[2];
			answer(u);
			return;
		}
		if(med==l[1]){//0
			u[2]=l[0];
			u[3]=r[2];
			u[4]=l[1];
			u[5]=l[2];
			answer(u);
			return;
		}
		if(med==l[0]){//1
			med=Max(l[0], l[2], r[2]);
			if(med==r[2]){//0
				u[2]=l[0];
				u[3]=l[1];
				u[4]=l[2];
				u[5]=r[2];
				answer(u);
				return;
			}
			if(med==l[2]){//0
				u[2]=r[2];
				u[3]=l[0];
				u[4]=l[1];
				u[5]=l[2];
				answer(u);
				return;
			}
		}
		return;
	}
	
	
}

Compilation message

In file included from grader.c:2:0:
graderlib.c: In function 'void answer(int*)':
graderlib.c:53:5: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
     if (_ghksjhdfkae19ga_ > 1) 
     ^~
graderlib.c:56:2: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if'
  for (i = 0; i < 6; i++) {
  ^~~
scales.cpp: In function 'void init(int)':
scales.cpp:9:15: warning: parameter 't' set but not used [-Wunused-but-set-parameter]
 void init(int t) {
               ^
# 결과 실행 시간 메모리 Grader output
1 Partially correct 2 ms 376 KB Output is partially correct
2 Partially correct 2 ms 476 KB Output is partially correct
3 Partially correct 2 ms 476 KB Output is partially correct
4 Partially correct 2 ms 476 KB Output is partially correct
5 Partially correct 2 ms 512 KB Output is partially correct
6 Partially correct 3 ms 512 KB Output is partially correct
7 Partially correct 2 ms 512 KB Output is partially correct
8 Partially correct 2 ms 512 KB Output is partially correct
9 Partially correct 2 ms 568 KB Output is partially correct
10 Partially correct 2 ms 568 KB Output is partially correct
11 Partially correct 2 ms 616 KB Output is partially correct
12 Partially correct 2 ms 616 KB Output is partially correct
13 Partially correct 2 ms 616 KB Output is partially correct
14 Partially correct 2 ms 616 KB Output is partially correct
15 Partially correct 2 ms 616 KB Output is partially correct
16 Partially correct 2 ms 616 KB Output is partially correct
17 Partially correct 2 ms 616 KB Output is partially correct
18 Partially correct 3 ms 620 KB Output is partially correct
19 Partially correct 3 ms 620 KB Output is partially correct
20 Partially correct 2 ms 620 KB Output is partially correct
21 Partially correct 2 ms 620 KB Output is partially correct
22 Partially correct 3 ms 620 KB Output is partially correct
23 Partially correct 2 ms 620 KB Output is partially correct
24 Partially correct 2 ms 620 KB Output is partially correct
25 Partially correct 2 ms 620 KB Output is partially correct
26 Partially correct 2 ms 620 KB Output is partially correct
27 Partially correct 2 ms 620 KB Output is partially correct
28 Partially correct 2 ms 620 KB Output is partially correct
29 Partially correct 2 ms 620 KB Output is partially correct
30 Partially correct 2 ms 620 KB Output is partially correct
31 Partially correct 2 ms 620 KB Output is partially correct
32 Partially correct 2 ms 620 KB Output is partially correct
33 Partially correct 2 ms 620 KB Output is partially correct
34 Partially correct 2 ms 620 KB Output is partially correct
35 Partially correct 2 ms 620 KB Output is partially correct
36 Partially correct 2 ms 620 KB Output is partially correct
37 Partially correct 2 ms 620 KB Output is partially correct
38 Partially correct 2 ms 620 KB Output is partially correct
39 Partially correct 2 ms 620 KB Output is partially correct
40 Partially correct 2 ms 620 KB Output is partially correct