Saturday, January 17, 2009

UVa problem 11231: sample code


001 #include "stdio.h"
002
003 int main() {
004 char line[100]
005 , first_box
006 , black
007 , white
008 ;
009
010 int n
011 , m
012 , c
013 , ne
014 , me
015 , code
016 , x
017 , y
018 , z
019 , q
020 , r
021 , s
022 , v
023 ;
024
025 black = 'b';
026 white = 'w';
027
028 while (fgets(line, 100, stdin)) {
029 sscanf(line, "%d %d %d", &n, &m, &c);
030
031 if (n == 0 && m == 0 && c== 0) {
032 break;
033 }
034
035 ne = n & 1;
036 me = m & 1;
037
038 ne <<= 2;
039 me <<= 1;
040
041 code = 0;
042 code = ne | me | c;
043
044 if (code == 0) {
045 first_box = black;
046 }
047 else if (code == 1) {
048 first_box = white;
049 }
050 else if (code == 2) {
051 first_box = white;
052 }
053 else if (code == 3) {
054 first_box = black;
055 }
056 else if (code == 4) {
057 first_box = white;
058 }
059 else if (code == 5) {
060 first_box = black;
061 }
062 else if (code == 6) {
063 first_box = black;
064 }
065 else {
066 first_box = white;
067 }
068
069 if (first_box == white) {
070 x = n - 6;
071 x >>= 1;
072
073 y = m - 6;
074 y >>= 1;
075
076 q = n - 7;
077 q >>= 1;
078
079 r = m - 7;
080 r >>= 1;
081 }
082 else {
083 x = n - 7;
084 x >>= 1;
085
086 y = m - 6;
087 y >>= 1;
088
089 q = n - 6;
090 q >>= 1;
091
092 r = m - 7;
093 r >>= 1;
094 }
095
096 z = x * y;
097 s = q * r;
098
099 v = z + s;
100
101 printf("%d\n", v);
102 }
103
104 return 0;
105 }

No comments:

Post a Comment