| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
直接模拟 一次稳A 0ms代码比较长,懒得改了
#include <iostream>
#include <string.h>
using namespace std;
int main()
{
int n;
cin>>n;
for(int i=0;i<n;i++)
{
int Coins[12]={1};
bool Coins_b[12]={false};
string str[9];
for(int j=0;j<9;j++)
{
cin>>str[j];
}
for(int j=2;j<9;j=j+3) {
if (str[j] == "even") {
int k = 0;
while (str[j - 2][k]) {
Coins_b[str[j - 2][k] - 'A'] = true;
k++;
}
k = 0;
while (str[j - 1][k]) {
Coins_b[str[j - 1][k] - 'A'] = true;
k++;
}
}
}
bool HL=false;
//假设假币是轻的
for(int l=0;l<12;l++)
{
if(Coins_b[l]) continue;
memset(Coins,0, sizeof(Coins));
Coins[l]=-1;
int count=0;
for(int j=2;j<9;j=j+3) {
if (str[j] == "up") {
int L=0,R=0;
int k = 0;
while (str[j - 2][k]) {
L+=Coins[str[j-2][k]-'A'];
k++;
}
k = 0;
while (str[j - 1][k]) {
R+=Coins[str[j-1][k]-'A'];
k++;
}
if(L>R) count++;
}
if (str[j] == "even") {
int L=0,R=0;
int k = 0;
while (str[j - 2][k]) {
L+=Coins[str[j-2][k]-'A'];
k++;
}
k = 0;
while (str[j - 1][k]) {
R+=Coins[str[j-1][k]-'A'];
k++;
}
if(L==R) count++;
}
if (str[j] == "down") {
int L=0,R=0;
int k = 0;
while (str[j - 2][k]) {
L+=Coins[str[j-2][k]-'A'];
k++;
}
k = 0;
while (str[j - 1][k]) {
R+=Coins[str[j-1][k]-'A'];
k++;
}
if(L<R) count++;
}
}
if(count==3) {
cout << char(l + 'A') <<" is the counterfeit coin and it is light."<<endl;
HL=true;
}
count=0;
}
//假设假币是重的
if(!HL)
{
for(int l=0;l<12;l++)
{
if(Coins_b[l]) continue;
memset(Coins,0, sizeof(Coins));
Coins[l]=-1;
int count=0;
for(int j=2;j<9;j=j+3) {
if (str[j] == "up") {
int L=0,R=0;
int k = 0;
while (str[j - 2][k]) {
L+=Coins[str[j-2][k]-'A'];
k++;
}
k = 0;
while (str[j - 1][k]) {
R+=Coins[str[j-1][k]-'A'];
k++;
}
if(L<R) count++;
}
if (str[j] == "even") {
int L=0,R=0;
int k = 0;
while (str[j - 2][k]) {
L+=Coins[str[j-2][k]-'A'];
k++;
}
k = 0;
while (str[j - 1][k]) {
R+=Coins[str[j-1][k]-'A'];
k++;
}
if(L==R) count++;
}
if (str[j] == "down") {
int L=0,R=0;
int k = 0;
while (str[j - 2][k]) {
L+=Coins[str[j-2][k]-'A'];
k++;
}
k = 0;
while (str[j - 1][k]) {
R+=Coins[str[j-1][k]-'A'];
k++;
}
if(L>R) count++;
}
}
if(count==3) {
cout << char(l + 'A') <<" is the counterfeit coin and it is heavy."<<endl;
}
count=0;
}
}
}
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator