提出 #102590


ソースコード 拡げる

#include<cstdio>
#include<algorithm>
#include<vector>
using namespace std;
typedef long long i64;

char in[500];
vector<pair<int, i64> > ex;
int pri[3];

int pritbl[20][3] = {
	{0, 0, 0},
	{1, 0, 0},
	{0, 1, 0},
	{0, 0, 1},
	{1, 1, 0},
	{1, 0, 1},
	{0, 1, 1},
	{0, 1, 2},
	{0, 2, 1},
	{2, 0, 1},
	{1, 0, 2},
	{1, 2, 0},
	{2, 1, 0},
};

i64 sol()
{
	vector<pair<int, i64> > tmp = ex;

	while(tmp.size() > 1){
		pair<int, int> zp = make_pair(100, 100);
		i64 opval = 0;
		int bonus = 0;
		for(int i=1;i<tmp.size()-1;i++){
			if(tmp[i-1].first == 3 && tmp[i+1].first == 4){
				tmp.erase(tmp.begin() + (i+1));
				tmp.erase(tmp.begin() + (i-1));
				goto nex;
			}
		}

		for(int i=0;i<tmp.size()-1;i++){
			if(tmp[i].first == 3) bonus -= 100;
			if(tmp[i].first == 4) bonus += 100;

			if(i==0) continue;
			if(tmp[i-1].first != 5 || tmp[i+1].first != 5) continue;
			if(tmp[i].first <= 2){
				zp = min(zp, make_pair(pri[tmp[i].first] + bonus,i));
			}
		}

		if(tmp[zp.second].first == 0) opval = tmp[zp.second-1].second + tmp[zp.second+1].second;
		if(tmp[zp.second].first == 1) opval = tmp[zp.second-1].second - tmp[zp.second+1].second;
		if(tmp[zp.second].first == 2) opval = tmp[zp.second-1].second * tmp[zp.second+1].second;

		tmp.erase(tmp.begin() + (zp.second+1));
		tmp.erase(tmp.begin() + (zp.second));
		tmp[zp.second-1] = make_pair(5, opval);

		//for(int i=0;i<tmp.size();i++) printf("%d,%lld ", tmp[i].first, tmp[i].second);
		//puts("");
nex:
		continue;
	}

	return tmp[0].second;
}

int main()
{
	scanf("%s", in);

	//lex
	i64 val = 0; bool flg = false;
	for(int i=0;in[i];i++){
		if(in[i]>='0'&&in[i]<='9'){
			val *= 10;
			val += in[i] - '0';
			flg = true;
		}else{	
			if(flg){
				ex.push_back(make_pair(5, val));
				val = 0;
				flg = false;
			}
			if(in[i]=='('){
				ex.push_back(make_pair(3, 0LL));
			}
			if(in[i]==')'){
				ex.push_back(make_pair(4, 0LL));
			}
			if(in[i]=='+'){
				ex.push_back(make_pair(0, 0LL));
			}
			if(in[i]=='-'){
				ex.push_back(make_pair(1, 0LL));
			}
			if(in[i]=='*'){
				ex.push_back(make_pair(2, 0LL));
			}
		}
	}
	if(flg) ex.push_back(make_pair(5, val));

	i64 ret = 0;
	ret = 1LL << 63LL;

	for(int i=0;i<13;i++){
		for(int j=0;j<3;j++) pri[j] = pritbl[i][j];
		ret = max(ret, sol());

	}
	printf("%lld\n", ret);

	return 0;
}

提出情報

提出日時
問題 G - Unordered Operators
ユーザ Operasan
言語 C++ (GCC 4.4.7)
得点 100
コード長 2417 Byte
結果 AC
実行時間 35 ms
メモリ 932 KiB

コンパイルエラー

./Main.cpp: In function ‘int main()’:
./Main.cpp:73: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result

ジャッジ結果

セット名 All
得点 / 配点 100 / 100
結果
AC × 128
セット名 テストケース
All 00-sample1.txt, 00-sample2.txt, 00-sample3.txt, allpatterntest-00.txt, allpatterntest-01.txt, allpatterntest-02.txt, allpatterntest-03.txt, allpatterntest-04.txt, allpatterntest-05.txt, allpatterntest-06.txt, allpatterntest-07.txt, allpatterntest-08.txt, allpatterntest-09.txt, allpatterntest-10.txt, allpatterntest-11.txt, allpatterntest-12.txt, overflow-00.txt, overflow-01.txt, random0000.txt, random0001.txt, random0002.txt, random0003.txt, random0004.txt, random0005.txt, random0006.txt, random0007.txt, random0008.txt, random0009.txt, random0010.txt, random0011.txt, random0012.txt, random0013.txt, random0014.txt, random0015.txt, random0016.txt, random0017.txt, random0018.txt, random0019.txt, random0020.txt, random0021.txt, random0022.txt, random0023.txt, random0024.txt, random0025.txt, random0026.txt, random0027.txt, random0028.txt, random0029.txt, random0030.txt, random0031.txt, random0032.txt, random0033.txt, random0034.txt, random0035.txt, random0036.txt, random0037.txt, random0038.txt, random0039.txt, random0040.txt, random0041.txt, random0042.txt, random0043.txt, random0044.txt, random0045.txt, random0046.txt, random0047.txt, random0048.txt, random0049.txt, random0050.txt, random0051.txt, random0052.txt, random0053.txt, random0054.txt, random0055.txt, random0056.txt, random0057.txt, random0058.txt, random0059.txt, random0060.txt, random0061.txt, random0062.txt, random0063.txt, random0064.txt, random0065.txt, random0066.txt, random0067.txt, random0068.txt, random0069.txt, random0070.txt, random0071.txt, random0072.txt, random0073.txt, random0074.txt, random0075.txt, random0076.txt, random0077.txt, random0078.txt, random0079.txt, random0080.txt, random0081.txt, random0082.txt, random0083.txt, random0084.txt, random0085.txt, random0086.txt, random0087.txt, random0088.txt, random0089.txt, random0090.txt, random0091.txt, random0092.txt, random0093.txt, random0094.txt, random0095.txt, random0096.txt, random0097.txt, random0098.txt, random0099.txt, random0100.txt, random0101.txt, random0102.txt, random0103.txt, random0104.txt, random0105.txt, random0106.txt, random0107.txt, random0108.txt, random0109.txt
ケース名 結果 実行時間 メモリ
00-sample1.txt AC 22 ms 924 KiB
00-sample2.txt AC 20 ms 800 KiB
00-sample3.txt AC 35 ms 748 KiB
allpatterntest-00.txt AC 22 ms 804 KiB
allpatterntest-01.txt AC 22 ms 920 KiB
allpatterntest-02.txt AC 19 ms 796 KiB
allpatterntest-03.txt AC 20 ms 800 KiB
allpatterntest-04.txt AC 20 ms 800 KiB
allpatterntest-05.txt AC 20 ms 800 KiB
allpatterntest-06.txt AC 20 ms 800 KiB
allpatterntest-07.txt AC 20 ms 804 KiB
allpatterntest-08.txt AC 21 ms 796 KiB
allpatterntest-09.txt AC 21 ms 800 KiB
allpatterntest-10.txt AC 21 ms 804 KiB
allpatterntest-11.txt AC 21 ms 796 KiB
allpatterntest-12.txt AC 21 ms 804 KiB
overflow-00.txt AC 21 ms 928 KiB
overflow-01.txt AC 21 ms 924 KiB
random0000.txt AC 21 ms 804 KiB
random0001.txt AC 21 ms 800 KiB
random0002.txt AC 21 ms 808 KiB
random0003.txt AC 21 ms 800 KiB
random0004.txt AC 21 ms 932 KiB
random0005.txt AC 21 ms 932 KiB
random0006.txt AC 21 ms 676 KiB
random0007.txt AC 21 ms 800 KiB
random0008.txt AC 21 ms 804 KiB
random0009.txt AC 21 ms 924 KiB
random0010.txt AC 22 ms 932 KiB
random0011.txt AC 20 ms 800 KiB
random0012.txt AC 21 ms 796 KiB
random0013.txt AC 21 ms 920 KiB
random0014.txt AC 20 ms 924 KiB
random0015.txt AC 20 ms 800 KiB
random0016.txt AC 21 ms 928 KiB
random0017.txt AC 21 ms 800 KiB
random0018.txt AC 21 ms 928 KiB
random0019.txt AC 20 ms 928 KiB
random0020.txt AC 20 ms 804 KiB
random0021.txt AC 21 ms 804 KiB
random0022.txt AC 21 ms 800 KiB
random0023.txt AC 20 ms 704 KiB
random0024.txt AC 20 ms 800 KiB
random0025.txt AC 21 ms 804 KiB
random0026.txt AC 21 ms 740 KiB
random0027.txt AC 21 ms 924 KiB
random0028.txt AC 21 ms 932 KiB
random0029.txt AC 20 ms 672 KiB
random0030.txt AC 20 ms 764 KiB
random0031.txt AC 21 ms 804 KiB
random0032.txt AC 20 ms 920 KiB
random0033.txt AC 21 ms 800 KiB
random0034.txt AC 20 ms 796 KiB
random0035.txt AC 20 ms 796 KiB
random0036.txt AC 20 ms 672 KiB
random0037.txt AC 21 ms 792 KiB
random0038.txt AC 21 ms 928 KiB
random0039.txt AC 21 ms 760 KiB
random0040.txt AC 21 ms 880 KiB
random0041.txt AC 21 ms 732 KiB
random0042.txt AC 21 ms 804 KiB
random0043.txt AC 20 ms 800 KiB
random0044.txt AC 20 ms 792 KiB
random0045.txt AC 21 ms 928 KiB
random0046.txt AC 21 ms 804 KiB
random0047.txt AC 21 ms 928 KiB
random0048.txt AC 20 ms 928 KiB
random0049.txt AC 20 ms 796 KiB
random0050.txt AC 20 ms 748 KiB
random0051.txt AC 21 ms 796 KiB
random0052.txt AC 21 ms 800 KiB
random0053.txt AC 20 ms 924 KiB
random0054.txt AC 20 ms 800 KiB
random0055.txt AC 21 ms 676 KiB
random0056.txt AC 22 ms 760 KiB
random0057.txt AC 21 ms 796 KiB
random0058.txt AC 20 ms 796 KiB
random0059.txt AC 21 ms 728 KiB
random0060.txt AC 20 ms 796 KiB
random0061.txt AC 20 ms 920 KiB
random0062.txt AC 21 ms 804 KiB
random0063.txt AC 20 ms 704 KiB
random0064.txt AC 21 ms 928 KiB
random0065.txt AC 21 ms 800 KiB
random0066.txt AC 21 ms 804 KiB
random0067.txt AC 20 ms 788 KiB
random0068.txt AC 21 ms 804 KiB
random0069.txt AC 21 ms 732 KiB
random0070.txt AC 20 ms 928 KiB
random0071.txt AC 20 ms 704 KiB
random0072.txt AC 21 ms 928 KiB
random0073.txt AC 20 ms 700 KiB
random0074.txt AC 20 ms 704 KiB
random0075.txt AC 20 ms 920 KiB
random0076.txt AC 20 ms 920 KiB
random0077.txt AC 20 ms 804 KiB
random0078.txt AC 20 ms 812 KiB
random0079.txt AC 21 ms 804 KiB
random0080.txt AC 21 ms 800 KiB
random0081.txt AC 22 ms 676 KiB
random0082.txt AC 21 ms 928 KiB
random0083.txt AC 21 ms 800 KiB
random0084.txt AC 21 ms 932 KiB
random0085.txt AC 20 ms 924 KiB
random0086.txt AC 21 ms 796 KiB
random0087.txt AC 23 ms 768 KiB
random0088.txt AC 21 ms 932 KiB
random0089.txt AC 21 ms 924 KiB
random0090.txt AC 21 ms 808 KiB
random0091.txt AC 21 ms 804 KiB
random0092.txt AC 21 ms 796 KiB
random0093.txt AC 21 ms 924 KiB
random0094.txt AC 22 ms 924 KiB
random0095.txt AC 22 ms 764 KiB
random0096.txt AC 20 ms 764 KiB
random0097.txt AC 20 ms 676 KiB
random0098.txt AC 21 ms 920 KiB
random0099.txt AC 21 ms 928 KiB
random0100.txt AC 21 ms 924 KiB
random0101.txt AC 21 ms 804 KiB
random0102.txt AC 21 ms 800 KiB
random0103.txt AC 20 ms 800 KiB
random0104.txt AC 20 ms 800 KiB
random0105.txt AC 21 ms 800 KiB
random0106.txt AC 23 ms 804 KiB
random0107.txt AC 21 ms 928 KiB
random0108.txt AC 19 ms 924 KiB
random0109.txt AC 21 ms 728 KiB
sample4.txt AC 21 ms 924 KiB