Submission #198080

# Submission time Handle Problem Language Result Execution time Memory
198080 2020-01-24T15:57:27 Z model_code Devil's Share (RMI19_devil) C++17
14 / 100
82 ms 27956 KB
/**
* user:  popescu-96c
* fname: Ioan
* lname: Popescu
* task:  devil
* score: 14.0
* date:  2019-10-10 06:29:57.928373
*/
#include <bits/stdc++.h>
using namespace std;

char s[1000005];
int d[11];
vector <int> v[1000005];

int main()
{
//    freopen("1.in", "r", stdin);

    int t, k;
    scanf("%d", &t);

    while(t--){
        scanf("%d", &k);
        int n = 0;
        for(int i = 1; i <= 9 ; ++i)
            scanf("%d", &d[i]), n += d[i];
        s[n + 1] = NULL;

        int nr = k - 1;
        for(int i = 9; i >= 1 && nr > 0 ; --i) while(d[i] > 0 && nr > 0) s[n--] = i + '0', --d[i], --nr;

        int Max = 0;
        for(int i = 9; i >= 1 ; --i) if(d[i]) {Max = i; break ;}

        int groups = d[Max];
//        cerr << Max << " " << d[Max] << endl;

        int st = 1, dr = groups;
        for(int i = 1; i < Max ; ++i){
            while(d[i]){
                int Last = 0;
                for(int j = st; j <= dr && d[i] ; ++j){
                    Last = j;
                    --d[i];
                    v[j].push_back(i);
                }
                if(d[i] == 0 && Last < dr) st = Last + 1;
            }
        }

        st = 1, dr = groups;
        while(st <= dr){
            for(int i = v[st].size() - 1; i >= 0 ; --i) s[n--] = v[st][i] + '0';
            s[n--] = Max + '0';
            ++st;

            if(st > dr) continue ;

            for(int i = v[dr].size() - 1; i >= 0 ; --i) s[n--] = v[dr][i] + '0';
            s[n--] = Max + '0';
            --dr;
        }

//        cerr << n << endl;

        printf("%s\n", s + 1);

        for(int i = 1; i <= groups ; ++i) v[i].clear();
    }

    return 0;
}

Compilation message

devil.cpp: In function 'int main()':
devil.cpp:28:20: warning: converting to non-pointer type 'char' from NULL [-Wconversion-null]
         s[n + 1] = NULL;
                    ^~~~
devil.cpp:21:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d", &t);
     ~~~~~^~~~~~~~~~
devil.cpp:24:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d", &k);
         ~~~~~^~~~~~~~~~
devil.cpp:27:31: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
             scanf("%d", &d[i]), n += d[i];
             ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Incorrect 25 ms 23800 KB Output isn't correct
# Verdict Execution time Memory Grader output
1 Correct 76 ms 24824 KB Output is correct
2 Correct 60 ms 24824 KB Output is correct
3 Correct 56 ms 24696 KB Output is correct
4 Correct 82 ms 24824 KB Output is correct
5 Correct 33 ms 24952 KB Output is correct
6 Correct 34 ms 24952 KB Output is correct
7 Correct 33 ms 24952 KB Output is correct
8 Correct 35 ms 26104 KB Output is correct
9 Correct 39 ms 27956 KB Output is correct
# Verdict Execution time Memory Grader output
1 Incorrect 59 ms 24824 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 25 ms 23800 KB Output isn't correct