原题链接
思路:
用数组 W_11[i], L_11[i],W_21[j] , L_21[j] 去记录分数,但两人的比分满足条件,i或j+1;
代码:
#include<iostream>
#include<cstdio>
#include<iomanip>
#include<algorithm>
#include<vector>
#include<set>
#include<list>
#include<queue>
#include<deque>
#include<unordered_map>
#include<map>
#include<string>
#include<cstring>
#include<stack>
#include<cmath>
#define vint vector<int>
#define vstr vector<string>
#define vll vector<long long>
#define ll long long
#define pf printf
#define sf scanf
#define sfd(n) scanf("%d", &n)
#define sfll(n) scanf("%lld", &n)
#define pfd(n) printf("%d", n)
#define pfll(n) printf("%lld", n)
#define pft printf("\t")
#define pfn printf("\n")
#define pfk printf(" ")
#define PI 3.1415926
#define MAX 100000
#define M 100003
using namespace std;
int main() {
char ch;
int W_11[6000] = {0}, L_11[6000] = {0};
int W_21[3000] = {0}, L_21[3000] = {0};
int i = 0, j = 0;
while( true ) {
cin >> ch;
if( ch=='E' ) {
break;
}
if( ch=='W' ) {
W_11[i]++;
W_21[j]++;
}else {
L_11[i]++;
L_21[j]++;
}
if( W_11[i]>=11 ) {
if( W_11[i]-L_11[i]>=2 ) {
i++;
}
}
if( L_11[i]>=11 ) {
if( L_11[i]-W_11[i]>=2 ) {
i++;
}
}
if( W_21[j]>=21 ) {
if( W_21[j]-L_21[j]>=2 ) {
j++;
}
}
if( L_21[j]>=21 ) {
if( L_21[j]-W_21[j]>=2 ) {
j++;
}
}
}
for( int k=0; k<=i; k++ ) {
cout << W_11[k] << ":" << L_11[k];
pfn;
}
pfn;
for( int p=0; p<=j; p++ ) {
cout << W_21[p] << ":" << L_21[p];
pfn;
}
pfn;
return 0;
}