QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#560369#664. TriangleYolki-palki (Vsevolod Nagibin, Denis Mustafin, Tikhon Evteev)#WA 0ms3588kbC++201.7kb2024-09-12 15:22:202024-09-12 15:22:21

Judging History

This is the latest submission verdict.

  • [2024-09-12 15:22:21]
  • Judged
  • Verdict: WA
  • Time: 0ms
  • Memory: 3588kb
  • [2024-09-12 15:22:20]
  • Submitted

answer

#include <map>
#include <set>
#include <array>
#include <cmath>
#include <deque>
#include <bitset>
#include <random>
#include <string>
#include <vector>
#include <cassert>
#include <complex>
#include <iomanip>
#include <iostream>
#include <algorithm>
#include <unordered_map>
#include <unordered_set>

using namespace std;

long long get1(vector<long long> A) {
  long long ans = 0;
  for (int _ = 0; _ < 2; ++_) {
    while (A.size() >= 3 && A.back() >= A[A.size() - 2] + A[A.size() - 3])
      A.pop_back();
    if (A.size() < 3) {
      return 0;
    }
    ans += A.back() + A[A.size() - 2] + A[A.size() - 3];
    for (int i = 0; i < 3; ++i)
      A.pop_back();
  }
  return ans;
}

bool check(const vector<long long>& A, int i) {
  long long cur[6];
  for (int j = 0; j < 6; ++j)
    cur[j] = A[i - j];
  reverse(cur, cur + 6);
  for (int mask = 0; mask < (1 << 6); ++mask) {
    if (__builtin_popcount(mask) != 3)
      continue;
    long long sum1 = 0, mx1 = 0;
    long long sum0 = 0, mx0 = 0;
    for (int i = 0; i < 6; ++i) {
      if (mask & (1 << i)) {
        sum1 += A[i];
        mx1 = A[i];
      } else {
        sum0 += A[i];
        mx0 = A[i];
      }
    }
    if (2 * mx1 < sum1 && 2 * mx0 < sum0)
      return true;
  }
  return false;
}

int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);

  int n;
  cin >> n;
  vector<long long> A(n);
  for (int i = 0; i < n; ++i)
    cin >> A[i];
  sort(A.begin(), A.end());
  long long ans = get1(A);
  for (int i = n - 1; i >= 5; --i) {
    long long cur = 0;
    for (int j = 0; j < 6; ++j)
      cur += A[i - j];
    if (check(A, i)) {
      ans = cur;
      break;
    }
  }
  cout << ans << '\n';
  return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 0ms
memory: 3588kb

input:

100
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1

output:

6

result:

ok single line: '6'

Test #2:

score: -100
Wrong Answer
time: 0ms
memory: 3552kb

input:

100
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
2
1
1
1
1
1
1
1
1

output:

7

result:

wrong answer 1st lines differ - expected: '6', found: '7'