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点問題で詰まってしまうのは重症なので精進しなおします