C問題 Tundoku
ABC172のC問題でACできません。
queueで2つの本の山の先頭でより小さい方を選んで、残りの時間を順に減らしていこうとしたのですが、テストケースが大きいとREやWAが出てしまいます。
何回も調べてみてわからなかったのでよろしくお願い致します。
ソースコード
C++
1#include <iostream> 2#include <queue> 3using namespace std; 4 5int solve (int &l ,int &k , queue<int> &a , queue<int> &b) { 6 int ans = 0 , aa, bb; 7 for (int i = 0 ; i < l ; i ++) { 8 aa = a.front(); 9 bb = b.front(); 10 11 if (b.empty() || aa <= bb) { //Bが空かAの先頭がより小さいならAを選ぶ 12 ans ++; 13 k -= aa; 14 a.pop(); 15 // cout << "a " << aa << endl; 16 } else if (a.empty() || aa > bb) { 17 ans ++; 18 k -= bb; 19 b.pop(); 20 // cout << "b " << bb << endl; 21 } 22 23 // cout << "k " << k << endl; 24 // cout << "ans " << ans << endl; 25 26 if (k == 0) { 27 break; 28 } else if (k < 0){ //Kが小さくなりすぎたら 29 ans --; 30 break; 31 } 32 33 } 34 35 return ans; 36 37} 38 39int main(){ 40 int n , m , k , tmp; 41 cin >> n >> m >> k; 42 queue<int> a , b; 43 for (int i = 0 ; i < n ; i ++) { cin >> tmp; a.push(tmp); } 44 for (int i = 0 ; i < m ; i ++) { cin >> tmp; b.push(tmp); } 45 int l = n + m; 46 47 cout << solve(l, k , a , b) << endl; 48} 49
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/29 20:42