Submission #14792

#TimeUsernameProblemLanguageResultExecution timeMemory
14792gs14004Parrots (IOI11_parrots)C++14
0 / 100
2084 ms64240 KiB
#include "encoder.h" #include "encoderlib.h" #include <vector> using namespace std; struct bignum{ vector<short> v; void init(char i){ v.clear(); v.push_back(i); } }; bignum operator+(bignum a, bignum b){ for (int i=0; i<a.v.size(); i++) { if(b.v.size() == i) break; a.v[i] += b.v[i]; if(a.v[i] >= 256){ a.v[i] -= 256; if(i + 1 == a.v.size()) a.v.push_back(0); a.v[i+1] ++; } } for (int i=(int)a.v.size(); i<b.v.size(); i++) { a.v.push_back(b.v[i]); } return a; } bool operator<(bignum a, bignum b){ if(a.v.size() != b.v.size()) return a.v.size() < b.v.size(); for (int i=(int)a.v.size()-1; i>=0; i--) { if(a.v[i] < b.v[i]) return 1; if(a.v[i] > b.v[i]) return 0; } return 0; } bignum bino[600][600]; void encode(int N, int* M){ for (int i=0; i<600; i++) { bino[i][0].init(1); for (int j=1; j<=i; j++) { bino[i][j] = bino[i-1][j] + bino[i-1][j-1]; } for (int j=i+1; j<600; j++) { bino[i][j].init(0); } } bignum base, t; t.v.clear(); for (int i=0; i<N; i++) { t.v.push_back(M[i]); } base.init(0); t = t + base; base.init(0); int length = 255 + 5 * N; for(int i=0; i<5*N; i++){ while (t < bino[length-1][5 * N - i] + base) { length--; } send(5 * N + 255 - length - i - 1); base = base + bino[length-1][5 * N - i]; length--; } }
#include "decoder.h" #include "decoderlib.h" #include <algorithm> #include <vector> using namespace std; struct bignum{ vector<short> v; void init(char i){ v.clear(); v.push_back(i); } }; bignum operator+(bignum a, bignum b){ for (int i=0; i<a.v.size(); i++) { if(b.v.size() == i) break; a.v[i] += b.v[i]; if(a.v[i] >= 256){ a.v[i] -= 256; if(i + 1 == a.v.size()) a.v.push_back(0); a.v[i+1] ++; } } for (int i=(int)a.v.size(); i<b.v.size(); i++) { a.v.push_back(b.v[i]); } return a; } bool operator<(bignum a, bignum b){ if(a.v.size() != b.v.size()) return a.v.size() < b.v.size(); for (int i=(int)a.v.size()-1; i>=0; i--) { if(a.v[i] < b.v[i]) return 1; if(a.v[i] > b.v[i]) return 0; } return 0; } bignum bino[600][600]; void decode(int N, int L, int X[]) { for (int i=0; i<600; i++) { bino[i][0].init(1); for (int j=1; j<=i; j++) { bino[i][j].init(0); bino[i][j] = bino[i-1][j] + bino[i-1][j-1]; } for (int j=i+1; j<600; j++) { bino[i][j].init(0); } } sort(X,X+L); bignum ret; ret.init(0); for (int i=0; i<L; i++) { ret = ret + bino[5 * N + 255 - X[i] - i - 2][5 * N - i]; } for (int i=0; i<N; i++) { output(ret.v[i]); } }

Compilation message (stderr)

encoder.cpp: In function 'bignum operator+(bignum, bignum)':
encoder.cpp:16:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for (int i=0; i<a.v.size(); i++) {
                   ~^~~~~~~~~~~
encoder.cpp:17:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         if(b.v.size() == i) break;
            ~~~~~~~~~~~^~~~
encoder.cpp:21:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
             if(i + 1 == a.v.size()) a.v.push_back(0);
                ~~~~~~^~~~~~~~~~~~~
encoder.cpp:25:34: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for (int i=(int)a.v.size(); i<b.v.size(); i++) {
                                 ~^~~~~~~~~~~

decoder.cpp: In function 'bignum operator+(bignum, bignum)':
decoder.cpp:17:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for (int i=0; i<a.v.size(); i++) {
                   ~^~~~~~~~~~~
decoder.cpp:18:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         if(b.v.size() == i) break;
            ~~~~~~~~~~~^~~~
decoder.cpp:22:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
             if(i + 1 == a.v.size()) a.v.push_back(0);
                ~~~~~~^~~~~~~~~~~~~
decoder.cpp:26:34: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for (int i=(int)a.v.size(); i<b.v.size(); i++) {
                                 ~^~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...