USACO chapter 2 section 2 Party Lamps
5300 ワード
USACO chapter 2 section 2 Party Lamps
Here are the test data inputs:
Thanks for your submission!注意条件:if(c>=(i 1+i 2+i 3+i 4)&&(c-(i 1+i 2+i 3+i 4))%2==0)......
/*
ID:tbbd4261PROG:lampsLANG:C++
*/
#include
<
fstream
>
#include
<
iostream
>
#include
<
string
>
#include
<
algorithm
>
#include
<
vector
>
using
namespace
std;ifstream fin(
"
lamps.in
"
);ofstream fout(
"
lamps.out
"
);
int
n,c,t;
bool
f[
101
];
bool
g[
101
];
int
last[
101
];
bool
judge(){
for
(
int
i
=
1
; i
<=
n; i
++
)
if
(last[i]
!=-
1
&&
last[i]
!=
g[i])
return
false
;
return
true
;}
void
turn1(){
for
(
int
i
=
1
; i
<=
n; i
++
) g[i]
=!
g[i];}
void
turn2(){
for
(
int
i
=
1
; i
<=
n; i
+=
2
) g[i]
=!
g[i];}
void
turn3(){
for
(
int
i
=
2
; i
<=
n;i
+=
2
) g[i]
=!
g[i];}
void
turn4(){
for
(
int
i
=
0
,k
=
1
; k
<=
n;) { g[k]
=!
g[k]; i
++
; k
=
3
*
i
+
1
; }}
int
main(){ fin
>>
n; fin
>>
c; vector
<
string
>
vec;
string
s; fill_n(f,
sizeof
f,
1
); fill_n(last,
sizeof
last,
-
1
);
while
(fin
>>
t,t
!=-
1
)last[t]
=
1
;
while
(fin
>>
t,t
!=-
1
)last[t]
=
0
;
int
i1, i2, i3, i4,i;
for
(i1
=
0
; i1
<=
1
; i1
++
)
for
(i2
=
0
; i2
<=
1
; i2
++
)
for
(i3
=
0
; i3
<=
1
; i3
++
)
for
(i4
=
0
; i4
<=
1
; i4
++
){
if
( c
>=
(i1
+
i2
+
i3
+
i4)
&&
(c
-
(i1
+
i2
+
i3
+
i4))
%
2
==
0
){
for
(i
=
1
; i
<=
n;i
++
) g[i]
=
f[i];
if
(i1)turn1();
if
(i2)turn2();
if
(i3)turn3();
if
(i4)turn4();
if
(judge()){
for
(s
=
""
,i
=
1
; i
<=
n; i
++
) s
+=
'
0
'
+
g[i]; vec.push_back(s); } } } sort(vec.begin(),vec.end());
if
(vec.size()
==
0
)fout
<<
"
IMPOSSIBLE
"
<<
endl;
else
{
for
(i
=
0
; i
<
vec.size(); i
++
) fout
<<
vec[i]
<<
endl; }
return
0
;}
USER: tian tianbing [tbbd4261]
TASK: lamps
LANG: C++
Compiling...
Compile: OK
Executing...
Test 1: TEST OK [0.011 secs, 3020 KB]
Test 2: TEST OK [0.000 secs, 3020 KB]
Test 3: TEST OK [0.000 secs, 3020 KB]
Test 4: TEST OK [0.011 secs, 3020 KB]
Test 5: TEST OK [0.000 secs, 3020 KB]
Test 6: TEST OK [0.000 secs, 3020 KB]
Test 7: TEST OK [0.011 secs, 3020 KB]
Test 8: TEST OK [0.011 secs, 3020 KB]
All tests OK.
Your program ('lamps') produced all correct answers! This is your
submission #4 for this problem. Congratulations!
Here are the test data inputs:
------- test 1 -------
10
0
-1
-1
------- test 2 -------
10
0
-1
1 -1
------- test 3 -------
20
3
-1
1 3 5 -1
------- test 4 -------
50
100
1 -1
-1
------- test 5 -------
75
250
-1
-1
------- test 6 -------
100
8394
1 7 13 19 25 31 37 43 49 55 -1
64 -1
------- test 7 -------
100
2000
31 86 23 -1
42 -1
------- test 8 -------
100
8950
-1
-1
Keep up the good work! Thanks for your submission!注意条件:if(c>=(i 1+i 2+i 3+i 4)&&(c-(i 1+i 2+i 3+i 4))%2==0)......
/*
ID:tbbd4261PROG:lampsLANG:C++
*/
#include
<
fstream
>
#include
<
iostream
>
#include
<
string
>
#include
<
algorithm
>
#include
<
vector
>
using
namespace
std;ifstream fin(
"
lamps.in
"
);ofstream fout(
"
lamps.out
"
);
int
n,c,t;
bool
f[
101
];
bool
g[
101
];
int
last[
101
];
bool
judge(){
for
(
int
i
=
1
; i
<=
n; i
++
)
if
(last[i]
!=-
1
&&
last[i]
!=
g[i])
return
false
;
return
true
;}
void
turn1(){
for
(
int
i
=
1
; i
<=
n; i
++
) g[i]
=!
g[i];}
void
turn2(){
for
(
int
i
=
1
; i
<=
n; i
+=
2
) g[i]
=!
g[i];}
void
turn3(){
for
(
int
i
=
2
; i
<=
n;i
+=
2
) g[i]
=!
g[i];}
void
turn4(){
for
(
int
i
=
0
,k
=
1
; k
<=
n;) { g[k]
=!
g[k]; i
++
; k
=
3
*
i
+
1
; }}
int
main(){ fin
>>
n; fin
>>
c; vector
<
string
>
vec;
string
s; fill_n(f,
sizeof
f,
1
); fill_n(last,
sizeof
last,
-
1
);
while
(fin
>>
t,t
!=-
1
)last[t]
=
1
;
while
(fin
>>
t,t
!=-
1
)last[t]
=
0
;
int
i1, i2, i3, i4,i;
for
(i1
=
0
; i1
<=
1
; i1
++
)
for
(i2
=
0
; i2
<=
1
; i2
++
)
for
(i3
=
0
; i3
<=
1
; i3
++
)
for
(i4
=
0
; i4
<=
1
; i4
++
){
if
( c
>=
(i1
+
i2
+
i3
+
i4)
&&
(c
-
(i1
+
i2
+
i3
+
i4))
%
2
==
0
){
for
(i
=
1
; i
<=
n;i
++
) g[i]
=
f[i];
if
(i1)turn1();
if
(i2)turn2();
if
(i3)turn3();
if
(i4)turn4();
if
(judge()){
for
(s
=
""
,i
=
1
; i
<=
n; i
++
) s
+=
'
0
'
+
g[i]; vec.push_back(s); } } } sort(vec.begin(),vec.end());
if
(vec.size()
==
0
)fout
<<
"
IMPOSSIBLE
"
<<
endl;
else
{
for
(i
=
0
; i
<
vec.size(); i
++
) fout
<<
vec[i]
<<
endl; }
return
0
;}