問題はこちら
No.268 ラッピング(Easy) - yukicoder
縦横高さをa,b,cとすると、各向き1周の長さは2*(a+b),2*(a+c),2*(b+c)となる。
なので、長いところの回数を少なく、短いところの回数を多くするようにすれば良い
int main(){ int a,b,c,p,q,r; scanf("%d%d%d%d%d%d",&a,&b,&c,&p,&q,&r); if(a>b)a^=b^=a^=b; if(b>c)c^=b^=c^=b; if(a>b)a^=b^=a^=b; //a,b,cのソート if(p>q)p^=q^=p^=q; if(q>r)r^=q^=r^=q; if(p>q)p^=q^=p^=q; //p,q,rのソート printf("%d",2*(a+b)*r+2*(a+c)*q+2*(b+c)*p); return 0; }
scanfとソートが長いので、読み込みながらソートしよう
こういう方針
a,b,c,d,e,f; main(i){ for(i=1;i<=6;i++){ scanf("%d",&f); e>f?f^=e^=f^=e:0; d>e?d^=e^=d^=e:0; if(i%3){d=e;e=f;} if(i==3){a=d+e;b=d+f;c=e+f;d=e=f=0;} } printf("%d",a*f+b*e+c*d<<1); }
ということでぎゅっとして
a,b,c,d,e,f,n; main(i){for(;n=~scanf("%d",&f);i++%3?d=e,e=f:i-7?a=d+e,b=d+f,c=e+f,d=e=f=0:printf("%d",a*f+b*e+c*d<<1))e>f?f^=e^=f^=e:0,d>e?d^=e^=d^=e:0;}
152B
全然いいアイディアが浮かばない