HDU 6044

fast IO

考虑边界情况

 

 1 namespace IO {
 2     const int MT = 40 * 1024 * 1024;  /// 40MB 请注意输入数据的大小!!!
 3     char IO_BUF[MT];
 4     int IO_PTR, IO_SZ;
 5     /// 要记得把这一行添加到main函数第一行!!!
 6     void begin() {
 7         IO_PTR = 0;
 8         IO_SZ = fread (IO_BUF, 1, MT, stdin);
 9     }
10     template<typename T>
11     inline bool scan_d (T & t) {
12         while (IO_PTR < IO_SZ && IO_BUF[IO_PTR] != '-' && (IO_BUF[IO_PTR] < '0' || IO_BUF[IO_PTR] > '9'))
13             IO_PTR ++;
14         if (IO_PTR >= IO_SZ) return false;
15         bool sgn = false;
16         if (IO_BUF[IO_PTR] == '-') sgn = true, IO_PTR ++;
17         for (t = 0; IO_PTR < IO_SZ && '0' <= IO_BUF[IO_PTR] && IO_BUF[IO_PTR] <= '9'; IO_PTR ++)
18             t = t * 10 + IO_BUF[IO_PTR] - '0';
19         if (sgn) t = -t;
20         return true;
21     }
22     inline bool scan_s (char s[]) {
23         while (IO_PTR < IO_SZ && (IO_BUF[IO_PTR] == ' ' || IO_BUF[IO_PTR] == '\n') ) IO_PTR ++;
24         if (IO_PTR >= IO_SZ) return false;
25         int len = 0;
26         while (IO_PTR < IO_SZ && IO_BUF[IO_PTR] != ' ' && IO_BUF[IO_PTR] != '\n')
27             s[len ++] = IO_BUF[IO_PTR], IO_PTR ++;
28         s[len] = '\0';
29         return true;
30     }
31     template<typename T>
32     void print(T x) {
33         static char s[33], *s1; s1 = s;
34         if (!x) *s1++ = '0';
35         if (x < 0) putchar('-'), x = -x;
36         while(x) *s1++ = (x % 10 + '0'), x /= 10;
37         while(s1-- != s) putchar(*s1);
38     }
39     template<typename T>
40     void println(T x) {
41         print(x); putchar('\n');
42     }
43 };
View Code

 

posted @ 2017-09-27 03:59  大四开始ACM  阅读(323)  评论(0编辑  收藏  举报