Ошибка компиляции и ошибка времени выполнения в UVa 12657 с использованием C ++ и JAVA

Я отправляю мой код на Вьюдж Вот. После того, как я проверю свой код на всех тестовых примерах в uDebug, я считаю, что мой код правильный. Но когда я отправляю его, используя C ++, Ошибка компиляции без отладочной информации появляется. Как ниже.

Ошибка компиляции с использованием C ++

После многократных попыток я получаю только ошибку компиляции. Поэтому я пишу свой код C ++ в ДЖАВА а также проверьте его правильность на uDebug. Затем я отправляю свой код и получаю Ошибка выполнения как ниже.

Ошибка выполнения при использовании JAVA

Компилятор, который я использую в vjudge, выше двух картинок. И мои варианты компилятора — ISO C ++ 11 5.11 на Dev-C ++ и jdk1.8.0_91 на Eclipse Jee Neon1.

Вот мой код

C ++

#include <iostream>

using namespace std;

#define MAX 100010
int myLeft[MAX], myRight[MAX];

void link(int L, int R)
{
myRight[L] = R;
myLeft[R] = L;
}

int main()
{
int test_case = 1;
while(!cin.eof())
{
int box_num = 0, command_num = 0;
cin >> box_num >> command_num;
if(box_num == 0)
break;
for(int i = 1; i <= box_num; i ++)
{
myLeft[i] = i - 1;
myRight[i] = i + 1;
}
myLeft[0] = 0;
myRight[0] = 1;
bool is_inv = false;
for(int i = 1; i <= command_num; i ++)
{
int op, X, Y;
cin >> op;
if(op == 4)
{
is_inv = !is_inv;
continue;
}
cin >> X >> Y;
if(is_inv && op != 3)
op = 3 - op;
if(op == 1)
{
if(myLeft[Y] == X)
continue;
link(myLeft[X], myRight[X]);
link(myLeft[Y], X);
link(X, Y);
}
else if(op == 2)
{
if(myRight[Y] == X)
continue;
link(myLeft[X], myRight[X]);
link(X, myRight[Y]);
link(Y, X);
}
else if(op == 3)
{
if(myLeft[Y] == X)
{
link(myLeft[X], myRight[X]);
link(X, myRight[Y]);
link(Y, X);
}
else if(myLeft[X] == Y)
{
link(myLeft[Y], myRight[Y]);
link(Y, myRight[X]);
link(X, Y);
}
else
{
link(myLeft[X], myRight[X]);
link(myLeft[Y], myRight[Y]);
int YL = myLeft[Y];
int YR = myRight[Y];
link(myLeft[X], Y);
link(Y, myRight[X]);
link(YL, X);
link(X, YR);
}
}
}
int b = 0;
long long result = 0;
for(int i = 1; i <= box_num; i ++)
{
b = myRight[b];
if(i % 2 == 1)
result += b;
}
if(is_inv && box_num % 2 == 0)
result = (long long)box_num*(box_num+1)/2 - result;
cout << "Case " << test_case++ << ": " << result << "\n";
}
return 0;
}

ДЖАВА

    import java.util.Scanner;

public class Main {

static int myLeft[] = new int[100010];
static int myRight[] = new int[100010];

public static void link(int L, int R)
{
myRight[L] = R;
myLeft[R] = L;
}
public static void main(String[] args)
{
int test_case = 1;
Scanner cin = new Scanner(System.in);
while(cin.hasNextInt())
{
int box_num = 0, command_num = 0;
box_num = cin.nextInt();
command_num = cin.nextInt();
for(int i = 1; i <= box_num; i ++)
{
myLeft[i] = i - 1;
myRight[i] = i + 1;
}
myLeft[0] = 0;
myRight[0] = 1;
boolean is_inv = false;
for(int i = 1; i <= command_num; i ++)
{
int op, X, Y;
op = cin.nextInt();
if(op == 4)
{
is_inv = !is_inv;
continue;
}
X = cin.nextInt();
Y = cin.nextInt();
if(is_inv && op != 3)
op = 3 - op;
if(op == 1)
{
if(myLeft[Y] == X)
continue;
link(myLeft[X], myRight[X]);
link(myLeft[Y], X);
link(X, Y);
}
else if(op == 2)
{
if(myRight[Y] == X)
continue;
link(myLeft[X], myRight[X]);
link(X, myRight[Y]);
link(Y, X);
}
else if(op == 3)
{
if(myLeft[Y] == X)
{
link(myLeft[X], myRight[X]);
link(X, myRight[Y]);
link(Y, X);
}
else if(myLeft[X] == Y)
{
link(myLeft[Y], myRight[Y]);
link(Y, myRight[X]);
link(X, Y);
}
else
{
link(myLeft[X], myRight[X]);
link(myLeft[Y], myRight[Y]);
int YL = myLeft[Y];
int YR = myRight[Y];
link(myLeft[X], Y);
link(Y, myRight[X]);
link(YL, X);
link(X, YR);
}
}
}
int b = 0;
long result = 0;
for(int i = 1; i <= box_num; i ++)
{
b = myRight[b];
if(i % 2 == 1)
result += b;
}
if(is_inv && box_num % 2 == 0)
result = (long)box_num*(box_num+1)/2 - result;
System.out.printf("Case %d: %d\n", test_case, result);
test_case ++;
}
}
}

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]