Codeforces 494A

#include<iostream>
#include<cstdio>
#include<string>
#include<cstring>
#include<string.h>
#include<algorithm>
#include<vector>
using namespace std;

const int maxn = (int)1e5 + 5;
char str[maxn];
int ll[maxn];
int rr[maxn];
vector<int> vec;
vector<int> pos;
vector<int> rec;
int main(){
	scanf("%s", str);
	int len = strlen(str);
	int minus = 0;
	for(int i = 0; i < len; ++i){
		switch(str[i]){
			case('('):
				minus--;
				break;
			case(')'):
				minus++;
				break;
			case('#'):
				pos.push_back(i);
				rec.push_back(1);
				minus++;
				break;
		}
		vec.push_back(minus);
	}
	int possize = pos.size();
	if(possize > 0){
		int lastpos = pos[possize - 1];
		int tmpminus = vec[lastpos];
		int fminus = vec[len - 1];
		if(fminus < 0){
			int rm = -1 * fminus;
			rec[possize-1]+= fminus * (-1);
			for(int j = 0; j < lastpos; ++j){
				if(vec[j] > 0){
					printf("-1\n");
					return 0;
				}
			}
			for(int j = lastpos; j < len; ++j){
				vec[j] += rm;
				if(vec[j] > 0){
					printf("-1\n");
					return 0;
				}
			}
			for(int j = 0; j < possize; ++j){
				printf("%d\n",rec[j]);
			}
		}
		else if(fminus > 0){
			printf("-1\n");
		}
		else{
			for(int j = 0; j < len; ++j){
				if(vec[j] > 0){
					printf("-1\n");
					return 0;
				}
			}
			for(int j = 0; j < possize; ++j){
				printf("%d\n",rec[j]);
			}
		}
	}
	return 0;
}


你可能感兴趣的:(Codeforces 494A)