nama40024
@nama40024

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

Atcoder 352 C問題について

解決したいこと

Atcoder Begginer Contest 352のC問題についてです。出力結果が異常な大きさになってしまいました。原因がさっぱりわかりません。だれか修正していただけないでしょうか。また、もっとスマートな回答があれば教えてください。学びになります。
問題は以下のURLをご参照ください。
https://atcoder.jp/contests/abc352/tasks/abc352_c

発生している問題・エラー

//入力例
3
4 10
5 8
2 9

//出力結果
-835060390

ソースコード

#include<bits/stdc++.h>
using namespace std;
int main(){
  int N;
  cin >> N;
  vector<int> a(N);
  vector<int> b(N);
  vector<int> C(N);
  for(int i =0;i < N;i++){
    cin >> a[i] >> b[i];
  }
  for(int i = 0;i < N;i++){
    C[i] = b[i] - a[i];
  }
  sort(C.begin(), C.end());
  int max = C.back();
  int sum;
  for(int i = 0;i < N;i++){
    sum += a[i];
  }
  cout << sum + max;
}
0

1Answer

Comments

  1. @nama40024

    Questioner

    先日もありがとうございました。初期化したら正しく動作しました。こういうミス本当に多いので気を付けます。ありがとうございました。

  2. もっとスマートな回答があれば教えてください

    スマートか分かりませんが、以下でどうでしょうか。

    #include<bits/stdc++.h>
    using namespace std;
    int main(){
      int N;
      cin >> N;
      int max = 0;
      int sum = 0;
      for(int i = 0; i < N; i++){
        int a, b;
        cin >> a >> b;
        sum += a;
        if(max < b - a) max = b - a;
      }
      cout << sum + max;
      return 0;
    }
    
  3. @nama40024

    Questioner

    1ループごとに顔の長さを判断していき、これまでの最長より大きければ更新するということでしょうか。こちらの方がソートを使うよりもスマートですね。ありがとうございます。

  4. 解決でよければ、当Q&Aをクロースしてくださいね

Your answer might help someone💌