public String isFair(int n, int b, int[] upTo, int[] quantity) {
int q = upTo.length;
Item[] t = new Item[q+1];
for(int i = 0; i < q; ++i) {
t[i] = new Item();
t[i].set(upTo[i], quantity[i]);
}
t[q] = new Item();
t[q].set(b, n);
Arrays.sort(t, new MyComparator());
int prev_upTo = 0, prev_quan = 0;
String YES = "fair";
String NO = "unfair";
boolean dp[][][] = new boolean[n+1][n+1][n+1];
for(int i = 0; i <= n; ++i)
for(int j = 0; j <= n; ++j)
for(int k = 0; k <= n; ++k)
dp[i][j][k] = false;
dp[0][0][0] = true;
for(int i = 0; i < q+1; ++i) {
int limit[] = new int[3];
limit[0]=limit[1]=limit[2]=0;
for(int j = prev_upTo + 1; j <= t[i].upTo; ++j)
++limit[j%3];
int quan = t[i].quantity - prev_quan; // how many in this interval
if(quan < 0 || quan > limit[0]+limit[1]+limit[2])
return NO;
for(int zero = 0; zero <= limit[0]; ++zero)
for(int one = 0; one <= limit[1]; ++one)
for(int two = 0; two <= limit[2]; ++two)
if(zero+one+two == quan)
for(int x=0;x<=n/3;++x)
for(int y=0;y<=n/3;++y)
for(int z=0;z<=n/3;++z)
if(x+y+z==prev_quan && dp[x][y][z])
dp[x+zero][y+one][z+two] = true;
prev_upTo = t[i].upTo;
prev_quan = t[i].quantity;
}
if(dp[n/3][n/3][n/3]) return YES;
return NO;
}
ICAgIHB1YmxpYyBTdHJpbmcgaXNGYWlyKGludCBuLCBpbnQgYiwgaW50W10gdXBUbywgaW50W10gcXVhbnRpdHkpIHsKICAgICAgICBpbnQgcSA9IHVwVG8ubGVuZ3RoOwogICAgICAgIEl0ZW1bXSB0ID0gbmV3IEl0ZW1bcSsxXTsKICAgICAgICBmb3IoaW50IGkgPSAwOyBpIDwgcTsgKytpKSB7CiAgICAgICAgICAgIHRbaV0gPSBuZXcgSXRlbSgpOwogICAgICAgICAgICB0W2ldLnNldCh1cFRvW2ldLCBxdWFudGl0eVtpXSk7CiAgICAgICAgfQogICAgICAgIHRbcV0gPSBuZXcgSXRlbSgpOwogICAgICAgIHRbcV0uc2V0KGIsIG4pOwogICAgICAgIEFycmF5cy5zb3J0KHQsIG5ldyBNeUNvbXBhcmF0b3IoKSk7CiAgICAgICAgaW50IHByZXZfdXBUbyA9IDAsIHByZXZfcXVhbiA9IDA7CiAgICAgICAgU3RyaW5nIFlFUyA9ICJmYWlyIjsKICAgICAgICBTdHJpbmcgTk8gPSAidW5mYWlyIjsKICAgICAgICBib29sZWFuIGRwW11bXVtdID0gbmV3IGJvb2xlYW5bbisxXVtuKzFdW24rMV07CiAgICAgICAgZm9yKGludCBpID0gMDsgaSA8PSBuOyArK2kpCiAgICAgICAgICAgIGZvcihpbnQgaiA9IDA7IGogPD0gbjsgKytqKQogICAgICAgICAgICAgICAgZm9yKGludCBrID0gMDsgayA8PSBuOyArK2spCiAgICAgICAgICAgICAgICAgICAgZHBbaV1bal1ba10gPSBmYWxzZTsKICAgICAgICBkcFswXVswXVswXSA9IHRydWU7CiAgICAgICAgZm9yKGludCBpID0gMDsgaSA8IHErMTsgKytpKSB7CiAgICAgICAgICAgIGludCBsaW1pdFtdID0gbmV3IGludFszXTsKICAgICAgICAgICAgbGltaXRbMF09bGltaXRbMV09bGltaXRbMl09MDsKICAgICAgICAgICAgZm9yKGludCBqID0gcHJldl91cFRvICsgMTsgaiA8PSB0W2ldLnVwVG87ICsraikKICAgICAgICAgICAgICAgICsrbGltaXRbaiUzXTsKICAgICAgICAgICAgaW50IHF1YW4gPSB0W2ldLnF1YW50aXR5IC0gcHJldl9xdWFuOyAvLyBob3cgbWFueSBpbiB0aGlzIGludGVydmFsCiAgICAgICAgICAgIGlmKHF1YW4gPCAwIHx8IHF1YW4gPiBsaW1pdFswXStsaW1pdFsxXStsaW1pdFsyXSkKICAgICAgICAgICAgICAgIHJldHVybiBOTzsKICAgICAgICAgICAgZm9yKGludCB6ZXJvID0gMDsgemVybyA8PSBsaW1pdFswXTsgKyt6ZXJvKQogICAgICAgICAgICAgZm9yKGludCBvbmUgPSAwOyBvbmUgPD0gbGltaXRbMV07ICsrb25lKQogICAgICAgICAgICAgIGZvcihpbnQgdHdvID0gMDsgdHdvIDw9IGxpbWl0WzJdOyArK3R3bykKICAgICAgICAgICAgICAgIGlmKHplcm8rb25lK3R3byA9PSBxdWFuKQogICAgICAgICAgICAgICAgICAgIGZvcihpbnQgeD0wO3g8PW4vMzsrK3gpCiAgICAgICAgICAgICAgICAgICAgIGZvcihpbnQgeT0wO3k8PW4vMzsrK3kpCiAgICAgICAgICAgICAgICAgICAgICBmb3IoaW50IHo9MDt6PD1uLzM7Kyt6KQogICAgICAgICAgICAgICAgICAgICAgICBpZih4K3krej09cHJldl9xdWFuICYmIGRwW3hdW3ldW3pdKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZHBbeCt6ZXJvXVt5K29uZV1beit0d29dID0gdHJ1ZTsKICAgICAgICAgICAgcHJldl91cFRvID0gdFtpXS51cFRvOwogICAgICAgICAgICBwcmV2X3F1YW4gPSB0W2ldLnF1YW50aXR5OwogICAgICAgIH0KICAgICAgICBpZihkcFtuLzNdW24vM11bbi8zXSkgcmV0dXJuIFlFUzsKICAgICAgICByZXR1cm4gTk87CiAgICB9
prog.cpp:1:5: error: expected unqualified-id before 'public'
public String isFair(int n, int b, int[] upTo, int[] quantity) {
^