そーすにっき

なんかいろいろのせておくばしょ

ARC081

お盆前に帰省+諸々で精進出来なかった結果がこれだよ!

結果:Cのみ

C:
入力:要素数N 値A_i(i[0,N))
出力:Aから相異なる4つを選んで最大の長方形の面積を出力
解法:
ソートして2つ等しい要素があれば大きい順にそれを選んでいく
3, 5,5,5, 7,...などの場合に5,5,5,5と選択しないように注意する

#include <bits/stdc++.h>
 
#define i64 long long
#define ui64 unsigned long long
#define REP(i,n) for(int (i)=0;(i)<(n);i++)
#define REP2(i,k,n) for(int (i)=(k);(i)<(n);i++)
#define MDIST(a,b) abs(a-b)
#define DIST(a,b) sqrt((a)*(a)+(b)*(b))
#define ATCODER 1000000007
using namespace std;
 
////////////////////////
 
int main(){
  vector<int> a;
  int n;
  cin >> n;
  a.resize(n);
  for(int i=0;i<n;i++){
    cin >> a[i];
  }
  sort(a.begin(),a.end(),greater<int>());
  int m1,m2;
  m1 = m2 = -1;
  for(int i=0;i<n-1;i++){
    if(a[i]==a[i+1]){
      if(m1==-1){
        m1 = a[i];
        i++;
      }else{
        m2 = a[i];
        break;
      }
    }else continue;
  }
  if(m1>0&&m2>0)cout << (i64)m1*m2 << endl;
  else cout << 0 << endl;
}

Dを1時間かけて解けなかった(400点)
400点問題で詰まってしまうのは重症なので精進しなおします