結果
問題 |
No.297 カードの数式
|
ユーザー |
|
提出日時 | 2016-06-07 18:49:20 |
言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,569 bytes |
コンパイル時間 | 1,275 ms |
コンパイル使用メモリ | 73,060 KB |
実行使用メモリ | 5,248 KB |
最終ジャッジ日時 | 2024-10-08 18:03:40 |
合計ジャッジ時間 | 2,182 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 19 WA * 4 |
ソースコード
#include<iostream> #include<string> #include<queue> #include<math.h> using namespace std; int main(){ int n; char* k; int num_p = 0; int num_m = 0; priority_queue<int, vector<int>, less<int> > q_max; priority_queue<int, vector<int>, less<int> > q_min; int c = 0; cin >> n; k = new char[n]; for(int i=0;i<n;i++){ cin >> k[i]; if(k[i] == '+'){ num_p += 1; } else if(k[i] == '-'){ num_m += 1; } else{ c += 1; int d = (int)(k[i]-'0'); q_max.push(d); q_min.push(d); } } int num_d = q_max.size(); int max_d = num_d-num_p-num_m; int result_max = 0; int result_min = 0; // MAX int i = max_d; int tmp = 0; while(i>0){ tmp += q_max.top()*pow(10,i-1); q_max.pop(); i -= 1; } result_max += tmp; int p=num_p; while(p>0){ result_max += q_max.top(); q_max.pop(); p -= 1; } int m = num_m; while(m>0){ result_max -= q_max.top(); q_max.pop(); m -= 1; } if(num_m!=0){ // contain at least 1 minus(es) // min i = max_d; tmp = 0; while(i>0){ tmp += q_min.top()*pow(10,i-1); q_min.pop(); i -= 1; } result_min -= tmp; int m = num_m; while(m>1){ result_min -= q_min.top(); q_min.pop(); m -= 1; } int p = num_p; while(p>=0){ result_min += q_min.top(); q_min.pop(); p -= 1; } } else{ // all plus int count = 0; int digit = 0; while(!q_min.empty()){ result_min += q_min.top()*pow(10,digit); q_min.pop(); count += 1; if(count > num_p) { count = 0; digit += 1; } } } cout << result_max << " " << result_min << endl; return 0; }