70分WA,求助
查看原帖
70分WA,求助
546830
XSean楼主2023/5/9 15:29
#include <bits/stdc++.h>

#define rep(i, a, b) for(int i = (a); i <= (b); i++)
#define pre(i, a, b) for(int i = (a); i >= (b); i--)
#define Ede(i, u) for(int i = h[u]; i; i = ne[i])
#define go(i, a) for(auto i : a)
//#define int long long
#define LL long long
#define ULL unsigned long long
#define PII pair<int, int>
#define PIL pair<int, long long>
#define PLI pair<long long, int>
#define PLL pair<long long, long long>
#define mp make_pair
#define eb emplace_back
#define opb pop_back
#define pb push_back
#define pf push_front
#define fi first
#define se second
#define sf scanf
#define prf printf
#define el putchar('\n')
#define mms(arr, n) memset(arr, n, sizeof(arr))
#define mmc(arr1, arr2) memcpy(arr1, arr2, sizeof(arr2))
#define Db(x) prf("test(%s): ", x)
const int inf = 0x3f3f3f3f;

template <typename T> inline void rd(T &x){
	x = 0; bool f = true; char ch = getchar();
	while(ch < '0' || ch > '9'){ if(ch == '-') f = false; ch = getchar();}
	while(ch >= '0' && ch <= '9'){ x = (x << 1) + (x << 3) + (ch ^ '0'); ch = getchar();}
	if(!f) x = -x;
}
template <typename T, typename ...Args> inline void rd(T &x, Args &...args){ rd(x); rd(args...);}

using namespace std;

const int N = 1e6 + 10;
string a, b;
int idx[N], idxx;
int cnt, fir = inf;

int main(){
	/*
	freopen(".in", "r", stdin);
	freopen(".out", "w", stdout);
	*/
	getline(cin, a);
	getline(cin, b);
	b = " " + b;
	rep(i, 1, b.length() - 1){
		if(b[i - 1] == ' ') idx[++idxx] = i;
	}
	int f = 1;
	rep(i, 1, idxx){
		if(i != idxx){
			if(idx[i + 1] - idx[i] - 1 != a.length()) continue;
			int indx = 0;
			while(indx < a.length() && a[indx] == b[idx[i] + indx]) indx++;
			if(indx == a.length()){
				if(f){
					f = 0;
					fir = idx[i] - 1;
				}
				cnt++;	
			} 
   		}else{
			if(b.length() - idx[i] != a.length()) continue;
			int indx = 0;
			while(indx < a.length() && a[indx] == b[idx[i] + indx]) indx++;
			if(indx == a.length()){
				if(f){
					f = 0;
					fir = idx[i] - 1;
				}
				cnt++;	
			} 
		}
	}
	a[0] = (a[0] >= 'a') ? (a[0] - 'a' + 'A') : (a[0] - 'A' + 'a');
	f = 1;
	rep(i, 1, idxx){
		if(i != idxx){
			if(idx[i + 1] - idx[i] - 1 != a.length()) continue;
			int indx = 0;
			while(indx < a.length() && a[indx] == b[idx[i] + indx]) indx++;
			if(indx == a.length()){
				if(f){
					f = 0;
					fir = min(fir, idx[i] - 1);
				}
				cnt++;	
			} 
   		}else{
			if(b.length() - idx[i] != a.length()) continue;
			int indx = 0;
			while(indx < a.length() && a[indx] == b[idx[i] + indx]) indx++;
			if(indx == a.length()){
				if(f){
					f = 0;
					fir = min(fir, idx[i] - 1);
				}
				cnt++;	
			}
		}
	}
	if(!cnt) puts("-1");
	else prf("%d %d\n", cnt, fir);
	return 0;
}





``
2023/5/9 15:29
加载中...