質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C++11

C++11は2011年に容認されたC++のISO標準です。以前のC++03に代わるもので、中枢の言語の変更・修正、標準ライブラリの拡張・改善を加えたものです。

Q&A

解決済

1回答

459閲覧

Atcoder C問題がWAになってしまう

michiru_775

総合スコア1

C++11

C++11は2011年に容認されたC++のISO標準です。以前のC++03に代わるもので、中枢の言語の変更・修正、標準ライブラリの拡張・改善を加えたものです。

0グッド

0クリップ

投稿2022/05/23 20:22

困っていること

https://atcoder.jp/contests/abc071/tasks/arc081_a
こちらの問題で、サンプル3つはACされるのですがその他がほとんど弾かれてしまいます。色々なサンプルを試してデバッグしたつもりなのですが、なぜWAになってしまうのでしょうか。言語はC++です。
初心者のためご教授よろしくお願いします。

コード

C++

1#include <bits/stdc++.h> 2using namespace std; 3int main(){ 4 int n; 5 cin >> n; 6 vector<int> temp(n); 7 vector<pair<int,int>> vec(0); 8 for(int i=0;i<n;i++){ 9 cin >> temp[i]; 10 } 11 sort(temp.begin(),temp.end(),greater<int>()); 12 /*for(int i=0;i<n;i++){ 13 cout << temp[i] << ' '; 14 } 15 cout << endl;*/ 16 vec.push_back(make_pair(temp[0],1)); 17 for(int i=1;i<n;i++){ 18 if(temp[i]==temp[i-1]){ 19 vec[vec.size()-1].second++; 20 //cout << i << ',' << temp[i] << endl; 21 } 22 else{ 23 vec.push_back(make_pair(temp[i],1)); 24 } 25 } 26 /*for(int i=0;i<vec.size();i++){ 27 cout << vec[i].first << ',' << vec[i].second << endl; 28 }*/ 29 int maxi=-1,sec=-1; 30 for(int i=0;i<vec.size();i++){ 31 if(vec[i].second>=2){ 32 maxi=i; 33 vec[i].second-=2; 34 break; 35 } 36 } 37 for(int i=maxi;i<vec.size();i++){ 38 if(vec[i].second>=2){ 39 sec=i; 40 break; 41 } 42 } 43 if(maxi!=-1&&sec!=-1){ 44 cout << vec[maxi].first*vec[sec].first << endl; 45 } 46 else{ 47 cout << 0 << endl; 48 } 49}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

問題を見ると、1 <= Ai <= 10^9 という制約が書いてあります。
この制約の下で、面積の最大値はいくつになるでしょうか。
そして、その最大値を int で表現することはできるのでしょうか。

あと、間違いというわけではありませんが、以下の最初のループでmaxi-1のままだった場合、次のループがどうなるかが非常に分かりづらいです。
できれば-1ではなくINT_MAXあたりを使うことをお勧めします。

c++

1 int maxi=-1,sec=-1; 2 for(int i=0;i<vec.size();i++){ 3 if(vec[i].second>=2){ 4 maxi=i; 5 vec[i].second-=2; 6 break; 7 } 8 } 9 for(int i=maxi;i<vec.size();i++){ 10 if(vec[i].second>=2){ 11 sec=i; 12 break; 13 } 14 }

投稿2022/05/23 21:41

編集2022/05/24 14:40
actorbug

総合スコア2224

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

michiru_775

2022/05/24 20:13

無事ACになりました、ありがとうございます!すっかり答えの大きさを考えるのを失念していました。早く回答してくださりありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問