Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- #include <algorithm>
- using namespace std;
- int main() {//00:25
- ifstream f("C:/inp/st170321/27/27-B.txt");
- int n;
- //int kk[10] = {1, 10, 9, 3, 7, 5, 6, 4, 2, 8};
- f >> n;
- long osts[3][3] = { 0 };
- long a;
- for (int i = 0; i < n; i++) {
- //a = kk[i];
- f >> a;
- long maxdif = 0;
- int maxkey = a % 3;
- for (int k = 0; k < 3; k++) { //помещаем в место с наименьшим числом
- if (a - osts[a % 3][k] > maxdif) {
- maxdif = a - osts[a % 3][k];
- maxkey = k;
- }
- }
- if (maxdif > 0) { //если записанное число больше
- osts[a % 3][maxkey] = a;
- }
- }
- long maxx = 0;
- //Как получить остаток 3:
- //0 + 0 + 0
- //1 + 1 + 1
- //2 + 2 + 2
- //0 + 1 + 2
- //а хотя можно просто перебрать все 27 вариантов + сумму каждого массива
- for (int i = 0; i < 3; i++) {
- if ((osts[i][0] + osts[i][1] + osts[i][2]) > maxx)
- maxx = osts[i][0] + osts[i][1] + osts[i][2];
- }
- for (int i = 0; i < 3; i++) {
- cout << "zero " << osts[0][i] << endl;
- cout << "one " << osts[1][i] << endl;
- cout << "two " << osts[2][i] << endl;
- for (int j = 0; j < 3; j++) {
- for (int k = 0; k < 3; k++) {
- if ((osts[0][i] + osts[1][j] + osts[2][k]) > maxx)
- maxx = osts[0][i] + osts[1][j] + osts[2][k];
- }
- }
- }
- cout << maxx << endl; //00:40
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement