Submission #53368651
Source Code Expand
#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;
using ll = long long;
#define REP_(i, a_, b_, a, b, ...) \
for (int i = (a), lim##i = (b); i < lim##i; i++)
#define REP(i, ...) REP_(i, __VA_ARGS__, __VA_ARGS__, 0, __VA_ARGS__)
#define all(v) v.begin(), v.end()
int main() {
int N;
cin >> N;
vector<ll> A(N);
ll lim = 100000000;
vector<ll> acc(N + 1);
acc[0] = 0;
REP(i, N) { cin >> A[i]; }
sort(A.begin(), A.end());
REP(i, N) {
// cout << A[i] << " ";
acc[i + 1] = acc[i] + A[i];
// acc[i + 1] %= lim;
}
// cout << endl;
// cout << endl;
ll ans = 0;
REP(i, N - 1) {
// cout << A[i] << endl;
// cout << "A[i]について二分探索する" << A[i] << endl;
ll v = lim - A[i];
auto it = lower_bound(A.begin() + i + 1, A.end(), v);
if (it != A.end()) {
// 二分探索にヒットしたので10**8を引く回数を求める
int idx = it - A.begin();
// cout << "合計が10**8以上になる最初の数: " << idx << " " << *it << endl;
// cout << "i+1から終端までの合計" << acc[N] - acc[i + 1] << endl;
ans += acc[N] - acc[i + 1];
ans += A[i] * (N - i - 1);
// cout << N - idx << "回 10**8を減産する" << endl;
ans -= lim * (N - idx);
} else {
ans += acc[N] - acc[i + 1];
ans += A[i] * (N - i - 1);
}
// cout << ans << endl;
}
cout << ans << endl;
}
Submission Info
| Submission Time | |
|---|---|
| Task | C - Sigma Problem |
| User | noyan |
| Language | C++ 23 (gcc 12.2) |
| Score | 300 |
| Code Size | 1435 Byte |
| Status | AC |
| Exec Time | 94 ms |
| Memory | 7944 KiB |
Judge Result
| Set Name | Sample | All | ||||
|---|---|---|---|---|---|---|
| Score / Max Score | 0 / 0 | 300 / 300 | ||||
| Status |
|
|
| Set Name | Test Cases |
|---|---|
| Sample | 00_sample_01.txt, 00_sample_02.txt |
| All | 00_sample_01.txt, 00_sample_02.txt, 01_test_01.txt, 01_test_02.txt, 01_test_03.txt, 01_test_04.txt, 01_test_05.txt, 01_test_06.txt, 01_test_07.txt, 01_test_08.txt, 01_test_09.txt, 01_test_10.txt, 01_test_11.txt, 01_test_12.txt, 01_test_13.txt, 01_test_14.txt, 01_test_15.txt, 01_test_16.txt, 01_test_17.txt, 01_test_18.txt, 01_test_19.txt, 01_test_20.txt |
| Case Name | Status | Exec Time | Memory |
|---|---|---|---|
| 00_sample_01.txt | AC | 1 ms | 3464 KiB |
| 00_sample_02.txt | AC | 1 ms | 3456 KiB |
| 01_test_01.txt | AC | 92 ms | 7808 KiB |
| 01_test_02.txt | AC | 93 ms | 7916 KiB |
| 01_test_03.txt | AC | 92 ms | 7816 KiB |
| 01_test_04.txt | AC | 93 ms | 7944 KiB |
| 01_test_05.txt | AC | 93 ms | 7908 KiB |
| 01_test_06.txt | AC | 93 ms | 7868 KiB |
| 01_test_07.txt | AC | 93 ms | 7936 KiB |
| 01_test_08.txt | AC | 92 ms | 7860 KiB |
| 01_test_09.txt | AC | 93 ms | 7884 KiB |
| 01_test_10.txt | AC | 93 ms | 7904 KiB |
| 01_test_11.txt | AC | 87 ms | 7812 KiB |
| 01_test_12.txt | AC | 33 ms | 7820 KiB |
| 01_test_13.txt | AC | 73 ms | 7808 KiB |
| 01_test_14.txt | AC | 12 ms | 3812 KiB |
| 01_test_15.txt | AC | 94 ms | 7796 KiB |
| 01_test_16.txt | AC | 60 ms | 6316 KiB |
| 01_test_17.txt | AC | 1 ms | 3460 KiB |
| 01_test_18.txt | AC | 1 ms | 3440 KiB |
| 01_test_19.txt | AC | 85 ms | 7884 KiB |
| 01_test_20.txt | AC | 84 ms | 7796 KiB |