• C. Jzzhu and Chocolate


    http://codeforces.com/contest/450/problem/C

    情况无外乎有:
    1、刀数太多,-1;
    2、全部切n边、全部切m边、n边切完切m边、m边切完切n边,不用想太多,直接取起最大值;

      1 public class Main {
      2 
      3     static int n, m, k;
      4 
      5     public static void main(String[] args) {
      6         IO io = new IO();
      7         n = io.nextInt();
      8         m = io.nextInt();
      9         k = io.nextInt();
     10 
     11         if (n-1+m-1<k)io.println(-1);
     12         else {
     13             long a=(n/(k+1));a*=m;
     14             long b=(m/(k+1));b*=n;
     15             int k1=k-(n-1);
     16             long c=0;
     17             if (k1+1>0) c=m/(k1+1);
     18             int k2=k-(m-1);
     19             long d=0;
     20             if (k2+1>0) d=n/(k2+1);
     21             io.println(Math.max(a,Math.max(b,Math.max(c,d))));
     22         }
     23     }
     24 
     25 
     26     static class IO {
     27 
     28         BufferedInputStream din;
     29         final int BUFFER_SIZE = 1 << 16;
     30         byte[] buffer;
     31         int byteRead, bufferPoint;
     32 
     33         StringBuilder builder;
     34         PrintWriter pw;
     35 
     36         public IO() {
     37             din = new BufferedInputStream(System.in);
     38             buffer = new byte[BUFFER_SIZE];
     39             bufferPoint = byteRead = 0;
     40 
     41             builder = new StringBuilder();
     42             pw = new PrintWriter(new BufferedWriter(new OutputStreamWriter(
     43                     System.out
     44             )), true);
     45         }
     46 
     47         int read() {
     48             if (bufferPoint >= byteRead) {
     49                 try {
     50                     byteRead = din.read(buffer, bufferPoint = 0, BUFFER_SIZE);
     51                 } catch (IOException e) {
     52                     e.printStackTrace();
     53                 }
     54                 if (byteRead == -1) buffer[0] = -1;
     55             }
     56             return buffer[bufferPoint++];
     57         }
     58 
     59         int peek() {
     60             if (byteRead == -1) return -1;
     61             if (bufferPoint >= byteRead) {
     62                 try {
     63                     byteRead = din.read(buffer, bufferPoint = 0, BUFFER_SIZE);
     64                 } catch (IOException e) {
     65                     return -1;
     66                 }
     67                 if (byteRead <= 0) return -1;
     68             }
     69             return buffer[bufferPoint];
     70         }
     71 
     72         boolean hasNext() {
     73             int c = peek();
     74             while (c != -1 && c <= ' ') {
     75                 read();
     76                 c = peek();
     77             }
     78             return c != -1;
     79         }
     80 
     81         char nextChar() {
     82             int c = read();
     83             while (c == ' ' || c == '
    ' || c == '
    ' || c == '	' || c == -1) {
     84                 c = read();
     85             }
     86             return (char) c;
     87         }
     88 
     89         double nextDouble() {
     90             double ret = 0, div = 1;
     91             int c = read();
     92             while (c <= ' ')
     93                 c = read();
     94             boolean neg = (c == '-');
     95             if (neg)
     96                 c = read();
     97             do {
     98                 ret = ret * 10 + c - '0';
     99             }
    100             while ((c = read()) >= '0' && c <= '9');
    101             if (c == '.') {
    102                 while ((c = read()) >= '0' && c <= '9') {
    103                     ret += (c - '0') / (div *= 10);
    104                 }
    105             }
    106             if (neg)
    107                 return -ret;
    108             return ret;
    109         }
    110 
    111         String nextLine() {
    112             byte[] strBuf = new byte[64];
    113             int cnt = 0, c;
    114             while ((c = read()) != -1) {
    115                 if (c == '
    ') {
    116                     if (cnt == 0) {
    117                         continue;
    118                     } else {
    119                         break;
    120                     }
    121                 }
    122                 if (strBuf.length == cnt) {
    123                     strBuf = Arrays.copyOf(strBuf, strBuf.length * 2);
    124                 }
    125                 strBuf[cnt++] = (byte) c;
    126             }
    127             return new String(strBuf, 0, cnt);
    128         }
    129 
    130 
    131         String next() {
    132             byte[] strBuf = new byte[64];
    133             int cnt = 0, c;
    134             while ((c = read()) != -1) {
    135                 if (Character.isWhitespace(c)) {
    136                     if (cnt == 0) {
    137                         continue;
    138                     } else {
    139                         break;
    140                     }
    141                 }
    142                 if (strBuf.length == cnt) {
    143                     strBuf = Arrays.copyOf(strBuf, strBuf.length * 2);
    144                 }
    145                 strBuf[cnt++] = (byte) c;
    146             }
    147             return new String(strBuf, 0, cnt);
    148         }
    149 
    150         int nextInt() {
    151             int ans = 0;
    152             int c = read();
    153             while (c <= ' ') c = read();
    154             boolean neg = (c == '-');
    155             if (neg) c = read();
    156             do {
    157                 ans = ans * 10 + c - '0';
    158             } while ('0' <= (c = read()) && c <= '9');
    159             bufferPoint--;
    160             return neg ? -ans : ans;
    161         }
    162 
    163         long nextLong() {
    164             long ans = 0;
    165             int c = read();
    166             while (c <= ' ') c = read();
    167             boolean neg = (c == '-');
    168             if (neg) c = read();
    169             do {
    170                 ans = ans * 10 + c - '0';
    171             } while ('0' <= (c = read()) && c <= '9');
    172             bufferPoint--;
    173             return neg ? -ans : ans;
    174         }
    175 
    176         void println(Object o) {
    177             pw.println(o);
    178         }
    179 
    180         void print(Object o) {
    181             pw.print(o);
    182         }
    183 
    184         void printf(String format, Object... objects) {
    185             pw.printf(format, objects);
    186         }
    187 
    188         void close() {
    189             pw.close();
    190         }
    191 
    192         void done(Object o) {
    193             print(o);
    194             close();
    195         }
    196 
    197     }
    198 }
  • 相关阅读:
    jacob使用入门及问题解析
    java通过jacob来读取word转换为htm格式
    Java操作Microsoft Word之jacob
    将一个项目导入到另一个项目里
    N个富文本编辑器/基于Web的HTML编辑器
    VirtualBox虚拟机网络设置(四种方式)
    (重置adb.exe)android关于The connection to adb is down, and a severe error has occured.这个问题的解决办法
    对java3d的位置理解
    作为Web开发人员,我为什么喜欢Google Chrome浏览器
    非阻塞同步机制与CAS操作
  • 原文地址:https://www.cnblogs.com/towerbird/p/11238471.html
Copyright © 2020-2023  润新知