-
Notifications
You must be signed in to change notification settings - Fork 0
/
tetris.cpp
128 lines (121 loc) · 1.35 KB
/
tetris.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
#include<iostream>
using namespace std;
int main()
{
unsigned long int n,i,*p,*q,*a,*b,max;
int t,j=-1,x, y,z;
cin>>t;
while(t--)
{
cin>>n;
p=new unsigned long int[n];
a=new unsigned long int[n];
q=p;
b=a;
for(i=0;i<n;i++)
{
cin>>*q;
q++;
}
for(i=0;i<n;i++)
{
cin>>*b;
b++;
}
b=a;
max=*b;
unsigned long int g,h,d,f=0;
for(i=0;i<n-1;i++)
{
b++;
if(*b>max)
max=*b;
}
q=p;
b=a;
if(n==1)
{
max=*b+*q;
goto one;
}
x=0;
y=0;
z=0;
for(i=0;i<n;i++)
{
if(*b!=max)
{
if(y==0)
{
g=*b+*q;
if(g==max)
{
*b=g;
y=1;
goto loop;
}
}
if(x==0&&q>p)
{
h=*b+*(q-1);
if(h==max)
{
*b=h;
x=1;
goto loop;
}
}
if(g+h-*b==max&&q>p&&x==0&&y==0)
{
*b=g+h-*b;
y=1;
x=1;
goto loop;
}
if(z==0&&q<(p+n-1))
{
d=*b+*(q+1);
if(d==max)
{
*b=d;
z=1;
goto loop;
}
}
if(g+d-*b==max&&q<(p+n-1)&&y==0&&z==0)
{
*b=g+d-*b;
y=1;
z=1;
goto loop;
}
if(d+h-*b==max&&q>p&&q<(p+n-1)&&x==0&&z==0)
{
*b=d+h-*b;
z=1;
x=1;
goto loop;
}
goto abc;
}
loop :
q++;
b++;
f++;
x=y;
y=z;
z=0;
}
if(f==n)
{
one :
cout<<max<<endl;
}
else
{
abc :
cout<<j<<endl;
}
}
return 0;
}