| Task: | Cent saving |
| Sender: | LTR |
| Submission time: | 2016-05-28 12:53:23 +0300 |
| Language: | C++ |
| Status: | READY |
| Result: | ACCEPTED |
| test | verdict | time | |
|---|---|---|---|
| #1 | ACCEPTED | 0.09 s | details |
| #2 | ACCEPTED | 0.08 s | details |
Code
#include <iostream>
#include <vector>
#include <cstdio>
#include <string>
int main()
{
int t;
std::cin >> t;
for (int ti = 0; ti < t; ++ti) {
int n;
std::cin >> n;
long long cost = 0;
int threes = 0;
int fours = 0;
for (int ni = 0; ni < n; ++ni) {
long long p;
std::cin >> p;
long long m = p % 5;
switch (m) {
case 0:
case 1:
case 2:
cost += (p - m);
break;
case 3:
cost += (p - m);
threes++;
break;
case 4:
cost += (p - m);
fours++;
break;
}
}
// Prefer 3 + 4
int combos = std::min(threes, fours);
cost += combos * 5;
threes -= combos;
fours -= combos;
// Sum remaining 3
if (threes > 0) {
int m = threes % 2;
int combines = ((threes - m) / 2);
cost += (combines + m) * 5;
}
// sum remaining 4
if (fours > 0) {
int m = fours % 3;
int combines = ((fours - m) / 3);
cost += ((2 *combines) + m) * 5;
}
std::cout << cost << std::endl;
}
}
Test details
Test 1
Verdict: ACCEPTED
| input |
|---|
| 100 1000 528433894 255789530 559301042 ... |
| correct output |
|---|
| 475191144965 460688647850 478543444030 475238936090 456736521510 ... |
| user output |
|---|
| 475191144965 460688647850 478543444030 475238936090 456736521510 ... Truncated |
Test 2
Verdict: ACCEPTED
| input |
|---|
| 1 100000 666086355 190481330 514353517 ... |
| correct output |
|---|
| 47176864928795 |
| user output |
|---|
| 47176864928795 |
