| Task: | Cent saving |
| Sender: | Spitfire |
| Submission time: | 2016-05-28 15:09:37 +0300 |
| Language: | C++ |
| Status: | READY |
| Result: | WRONG ANSWER |
| test | verdict | time | |
|---|---|---|---|
| #1 | WRONG ANSWER | 0.06 s | details |
| #2 | WRONG ANSWER | 0.06 s | details |
Code
#include <iostream>
#include <cstdint>
inline uint64_t round(uint64_t n, uint64_t d) {
switch(d) {
case 0:
case 1:
case 2:
return (n / 10) * 10;
case 3:
case 4:
case 5:
case 6:
case 7:
return (n / 10) * 10 + 5;
case 8:
case 9:
return (n / 10) * 10 + 10;
}
return 0;
}
inline bool is_cheap(uint64_t n) {
switch(n) {
case 0:
case 1:
case 2:
case 5:
case 6:
case 7:
return true;
}
return false;
}
int main()
{
std::ios_base::sync_with_stdio(0);
std::cin.tie(0);
unsigned int t;
std::cin >> t;
unsigned int nb;
for (size_t i = 0; i < t; i++) {
std::cin >> nb;
uint64_t input;
uint64_t digit;
uint64_t sum = 0;
uint64_t temp_sum = 0;
for (size_t j = 0; j < nb; j++) {
std::cin >> input;
digit = input % 10;
if (is_cheap(digit)) {
sum += round(input, digit);
continue;
}
temp_sum += input;
digit = temp_sum % 10;
if (is_cheap(digit)) {
sum += round(temp_sum, digit);
temp_sum = 0;
}
}
digit = temp_sum % 10;
sum += round(temp_sum, digit);
std::cout << sum << std::endl;
}
return 0;
}
Test details
Test 1
Verdict: WRONG ANSWER
| input |
|---|
| 100 1000 528433894 255789530 559301042 ... |
| correct output |
|---|
| 475191144965 460688647850 478543444030 475238936090 456736521510 ... |
| user output |
|---|
| 475191145085 460688647960 478543444145 475238936190 456736521630 ... Truncated |
Test 2
Verdict: WRONG ANSWER
| input |
|---|
| 1 100000 666086355 190481330 514353517 ... |
| correct output |
|---|
| 47176864928795 |
| user output |
|---|
| 47176864939695 |
