# |
Submission time |
Handle |
Problem |
Language |
Result |
Execution time |
Memory |
922572 |
2024-02-05T16:55:14 Z |
kim |
Parrots (IOI11_parrots) |
C++17 |
|
172 ms |
216552 KB |
#include "encoder.h"
#include "encoderlib.h"
#include<bits/stdc++.h>
using namespace std;
#define eb emplace_back
namespace Encode{
struct bignum{
short base=256,len=320;
array<short,320> a;
bignum(short x=0){
for(int i=0;i<len;++i) a[i]=x%base,x/=base;
}
bignum& operator+=(const bignum &o){
for(int i=0;i<len;++i){
a[i]+=o.a[i];
if(a[i]>=base) a[i]-=base,++a[i+1];
}
return *this;
}
bignum& operator-=(const bignum &o){
for(int i=0;i<len;++i){
a[i]-=o.a[i];
if(a[i]<0) a[i]+=base,--a[i+1];
}
return *this;
}
friend bignum operator+(const bignum &l,const bignum &r){return bignum(l)+=r;}
int cmp(const bignum &r){
for(int i=len-1;i>=0;--i){
if(a[i]!=r.a[i]) return a[i]<r.a[i]?-1:1;
}
return 0;
}
bool operator<(const bignum &o){return this->cmp(o)==-1;}
bool operator>(const bignum &o){return this->cmp(o)==1;}
bool operator<=(const bignum &o){return !(*this>o);}
};
bool ok=0;
bignum dp[325][260],qs[325][260];
void f(){
ok=1;
int n=325,m=260;
for(int j=0;j<m;++j) dp[1][j].a[0]=1,qs[1][j].a[0]=j+1;
for(int i=2;i<n;++i){
for(int j=0;j<m;++j){
dp[i][j]=qs[i-1][j];
if(j==0) qs[i][j]=dp[i][j];
else qs[i][j]=qs[i][j-1]+dp[i][j];
}
}
}
}; using namespace Encode;
void encode(int N, int M[])
{
if(!ok) f();
bignum num;
for(int i=0;i<N;++i) num.a[i]=M[i];
int L=5*N;
vector<int> vec(L);
for(int i=L-1;i>=0;--i){
int l=0,r=255;
while(l<r){
int mid=l+r>>1;
if(qs[i+1][mid]<=num) l=mid+1;
else r=mid;
}
if(l==0) break;
num-=qs[i+1][l-1];
vec[i]=l;
}
for(auto &e:vec) send(e);
}
#include "decoder.h"
#include "decoderlib.h"
#include<bits/stdc++.h>
using namespace std;
#define eb emplace_back
namespace Decode{
struct bignum{
short base=256,len=320;
array<short,320> a;
bignum(short x=0){
for(int i=0;i<len;++i) a[i]=x%base,x/=base;
}
bignum& operator+=(const bignum &o){
for(int i=0;i<len;++i){
a[i]+=o.a[i];
if(a[i]>=base) a[i]-=base,++a[i+1];
}
return *this;
}
bignum& operator-=(const bignum &o){
for(int i=0;i<len;++i){
a[i]-=o.a[i];
if(a[i]<0) a[i]+=base,--a[i+1];
}
return *this;
}
friend bignum operator+(const bignum &l,const bignum &r){return bignum(l)+=r;}
int cmp(const bignum &r){
for(int i=len-1;i>=0;--i){
if(a[i]!=r.a[i]) return a[i]<r.a[i]?-1:1;
}
return 0;
}
bool operator<(const bignum &o){return this->cmp(o)==-1;}
bool operator>(const bignum &o){return this->cmp(o)==1;}
bool operator<=(const bignum &o){return !(*this>o);}
};
bool ok=0;
bignum dp[325][260],qs[325][260];
void f(){
ok=1;
int n=325,m=260;
for(int j=0;j<m;++j) dp[1][j].a[0]=1,qs[1][j].a[0]=j+1;
for(int i=2;i<n;++i){
for(int j=0;j<m;++j){
dp[i][j]=qs[i-1][j];
if(j==0) qs[i][j]=dp[i][j];
else qs[i][j]=qs[i][j-1]+dp[i][j];
}
}
}
}; using namespace Decode;
void decode(int N, int L, int X[])
{
if(!ok) f();
sort(X,X+L);
bignum num;
for(int i=0;i<L;++i){
if(X[i]>0) num+=qs[i+1][X[i]-1];
}
for(int i=0;i<N;++i) output(num.a[i]);
}
Compilation message
encoder.cpp: In function 'void encode(int, int*)':
encoder.cpp:68:16: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
68 | int mid=l+r>>1;
| ~^~
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
123 ms |
215888 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
136 ms |
215764 KB |
Output is correct |
2 |
Correct |
141 ms |
215744 KB |
Output is correct |
3 |
Correct |
134 ms |
216092 KB |
Output is correct |
4 |
Correct |
137 ms |
216032 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
131 ms |
215752 KB |
Output is correct |
2 |
Correct |
136 ms |
215996 KB |
Output is correct |
3 |
Correct |
135 ms |
215820 KB |
Output is correct |
4 |
Correct |
135 ms |
215876 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
129 ms |
215736 KB |
Output is correct |
2 |
Correct |
138 ms |
215836 KB |
Output is correct |
3 |
Correct |
133 ms |
215860 KB |
Output is correct |
4 |
Correct |
144 ms |
216552 KB |
Output is correct |
5 |
Correct |
142 ms |
215876 KB |
Output is correct |
6 |
Correct |
145 ms |
216440 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
131 ms |
215756 KB |
Output is correct - P = 5.000000 |
2 |
Correct |
143 ms |
215780 KB |
Output is correct - P = 5.000000 |
3 |
Correct |
155 ms |
215840 KB |
Output is correct - P = 5.000000 |
4 |
Correct |
157 ms |
215828 KB |
Output is correct - P = 5.000000 |
5 |
Correct |
163 ms |
215808 KB |
Output is correct - P = 5.000000 |
6 |
Correct |
166 ms |
215856 KB |
Output is correct - P = 5.000000 |
7 |
Correct |
172 ms |
215936 KB |
Output is correct - P = 5.000000 |