#include <iostream>
#include <vector>
#include<bits/stdc++.h>
using namespace std;
int main() {
// std::vector<int> scv = {
// -3, 13, 6, -29, -31, 43, 46, 8, 7, 21, 12, 6, 31, 38, 2, 31,
// 12, -8, 23, 14, -22, 37, 24, 19, -2, 24, 17, 31, -6, 2, 4, 11,
// -13, 41, 17, 4, 15, -9, -32, 33, 23, -6, 18, 32, 9, -6, 23, 9,
// -15, 20, 3, 19, -16, 11, 8
// };
std::vector<int> scv = {
-2, 11, 9, -26, -33, 35, 32, -3, 2, 11,
13, -3, 25, 28, 2, 30, 14, -4, 17, 20,
-15, 32, 15, 13, -2, 29, 19, 32, 11, 10,
-5, -1, -18, 34, 12, 3, 14, -4, -34, 28,
19, -4, 16, 31, 11, -3, 16, 14, -11, 24,
11, 19, -20, 17, 15
};
std::vector<int> vti = {
-2, 11, 12, -25, -36, 30, 21, -11, -1, 5, 16, -11, 19, 19, 1, 28,
15, -2, 12, 24, -10, 29, 6, 8, -1, 34, 19, 30, 24, 19, -13, -9,
-25, 30, 8, 2, 12, 1, -37, 26, 16, -2, 14, 31, 12, 0, 11, 19,
-7, 28, 19, 18, -24, 22, 20
};
int t = vti.size();
vector<double> tmp(t,1.0);
vector<vector<double>> telltale(t, tmp), xirr(t, tmp);
for(int l=0;l< t;l++)
{
for(int r=l; r<t;r++)
{
int cnt = r-l+1;
double d= 1.0;
for(int k=0; k<cnt;k++)
{
double scv_r = (100.0 +scv[l+k])/100,
vti_r = (100.0 +vti[l+k])/100;
d = (d*scv_r)/vti_r;
}
telltale[l][r]= d;
}
}
for(int l=0;l< t;l++)
{
for(int r=l; r<t;r++)
{
int cnt = r-l+1;
double d= 0.0;
for(int k=0; k<cnt;k++)
{
d+= telltale[l+k][r];
}
d = d/cnt;
xirr[l][r]= d;
}
}
vector<vector<double>> distribution_telltale_rolling_period(t+1);
for(int l=0;l<t;l++)
{
for(int r=l;r<t;r++)
{
distribution_telltale_rolling_period[r-l+1].push_back(telltale[l][r]);
}
}
double prev =1.0;
for(int i=0;i< t;i++)
{
double perc = ((telltale[0][i]- prev)/prev)*100;
prev = telltale[0][i];
cout<< perc<<endl;
}
// for(int i=1;i< (t+1);i++)
// {
// sort(distribution_telltale_rolling_period[i].begin(),
// distribution_telltale_rolling_period[i].end());
// //cout<<"\n"<<i;
// for(int j=0; j< distribution_telltale_rolling_period[i].size();j++)
// {
// cout<<"(";
// cout<<i<<","<<distribution_telltale_rolling_period[i][j]<<"),";
// }
// }
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZTxiaXRzL3N0ZGMrKy5oPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwppbnQgbWFpbigpIHsKICAgIC8vIHN0ZDo6dmVjdG9yPGludD4gc2N2ID0gewogICAgLy8gICAgIC0zLCAxMywgNiwgLTI5LCAtMzEsIDQzLCA0NiwgOCwgNywgMjEsIDEyLCA2LCAzMSwgMzgsIDIsIDMxLAogICAgLy8gICAgIDEyLCAtOCwgMjMsIDE0LCAtMjIsIDM3LCAyNCwgMTksIC0yLCAyNCwgMTcsIDMxLCAtNiwgMiwgNCwgMTEsCiAgICAvLyAgICAgLTEzLCA0MSwgMTcsIDQsIDE1LCAtOSwgLTMyLCAzMywgMjMsIC02LCAxOCwgMzIsIDksIC02LCAyMywgOSwKICAgIC8vICAgICAtMTUsIDIwLCAzLCAxOSwgLTE2LCAxMSwgOAogICAgLy8gfTsKICAgIHN0ZDo6dmVjdG9yPGludD4gc2N2ID0gewogICAgICAgIC0yLCAxMSwgOSwgLTI2LCAtMzMsIDM1LCAzMiwgLTMsIDIsIDExLAogICAgICAgIDEzLCAtMywgMjUsIDI4LCAyLCAzMCwgMTQsIC00LCAxNywgMjAsCiAgICAgICAgLTE1LCAzMiwgMTUsIDEzLCAtMiwgMjksIDE5LCAzMiwgMTEsIDEwLAogICAgICAgIC01LCAtMSwgLTE4LCAzNCwgMTIsIDMsIDE0LCAtNCwgLTM0LCAyOCwKICAgICAgICAxOSwgLTQsIDE2LCAzMSwgMTEsIC0zLCAxNiwgMTQsIC0xMSwgMjQsCiAgICAgICAgMTEsIDE5LCAtMjAsIDE3LCAxNQogICAgfTsKICAgIAogICAgc3RkOjp2ZWN0b3I8aW50PiB2dGkgPSB7CiAgICAgICAgLTIsIDExLCAxMiwgLTI1LCAtMzYsIDMwLCAyMSwgLTExLCAtMSwgNSwgMTYsIC0xMSwgMTksIDE5LCAxLCAyOCwKICAgICAgICAxNSwgLTIsIDEyLCAyNCwgLTEwLCAyOSwgNiwgOCwgLTEsIDM0LCAxOSwgMzAsIDI0LCAxOSwgLTEzLCAtOSwKICAgICAgICAtMjUsIDMwLCA4LCAyLCAxMiwgMSwgLTM3LCAyNiwgMTYsIC0yLCAxNCwgMzEsIDEyLCAwLCAxMSwgMTksCiAgICAgICAgLTcsIDI4LCAxOSwgMTgsIC0yNCwgMjIsIDIwCiAgICB9OwoKICAgIGludCB0ID0gdnRpLnNpemUoKTsKICAgIHZlY3Rvcjxkb3VibGU+IHRtcCh0LDEuMCk7CiAgICB2ZWN0b3I8dmVjdG9yPGRvdWJsZT4+IHRlbGx0YWxlKHQsIHRtcCksIHhpcnIodCwgdG1wKTsKICAgIAogICAgZm9yKGludCBsPTA7bDwgdDtsKyspCiAgICB7CiAgICAJZm9yKGludCByPWw7IHI8dDtyKyspCiAgICAJewogICAgCQlpbnQgY250ID0gci1sKzE7CiAgICAJCWRvdWJsZSBkPSAxLjA7CiAgICAJCWZvcihpbnQgaz0wOyBrPGNudDtrKyspCiAgICAJCXsKICAgIAkJCWRvdWJsZSBzY3ZfciA9ICgxMDAuMCArc2N2W2wra10pLzEwMCwKICAgIAkJCXZ0aV9yID0gKDEwMC4wICt2dGlbbCtrXSkvMTAwOwogICAgCQkJZCA9IChkKnNjdl9yKS92dGlfcjsKICAgIAkJfQogICAgCQl0ZWxsdGFsZVtsXVtyXT0gZDsKICAgIAl9CiAgICB9CiAgICBmb3IoaW50IGw9MDtsPCB0O2wrKykKICAgIHsKICAgIAlmb3IoaW50IHI9bDsgcjx0O3IrKykKICAgIAl7CiAgICAJCWludCBjbnQgPSByLWwrMTsKICAgIAkJZG91YmxlIGQ9IDAuMDsKICAgIAkJZm9yKGludCBrPTA7IGs8Y250O2srKykKICAgIAkJewogICAgCQkJZCs9IHRlbGx0YWxlW2wra11bcl07CiAgICAJCX0KICAgIAkJZCA9IGQvY250OwogICAgCQl4aXJyW2xdW3JdPSBkOwogICAgCX0KICAgIH0KICAgIHZlY3Rvcjx2ZWN0b3I8ZG91YmxlPj4gZGlzdHJpYnV0aW9uX3RlbGx0YWxlX3JvbGxpbmdfcGVyaW9kKHQrMSk7CiAgICBmb3IoaW50IGw9MDtsPHQ7bCsrKQogICAgewogICAgCWZvcihpbnQgcj1sO3I8dDtyKyspCiAgICAJewogICAgCQlkaXN0cmlidXRpb25fdGVsbHRhbGVfcm9sbGluZ19wZXJpb2Rbci1sKzFdLnB1c2hfYmFjayh0ZWxsdGFsZVtsXVtyXSk7CiAgICAJfQogICAgfQogICAgCglkb3VibGUgcHJldiA9MS4wOwoJZm9yKGludCBpPTA7aTwgdDtpKyspCgl7CgkJZG91YmxlIHBlcmMgPSAoKHRlbGx0YWxlWzBdW2ldLSBwcmV2KS9wcmV2KSoxMDA7CgkJcHJldiA9IHRlbGx0YWxlWzBdW2ldOwoJCWNvdXQ8PCBwZXJjPDxlbmRsOwoJfQoJCgkvLyBmb3IoaW50IGk9MTtpPCAodCsxKTtpKyspCgkvLyB7CgkvLyAJc29ydChkaXN0cmlidXRpb25fdGVsbHRhbGVfcm9sbGluZ19wZXJpb2RbaV0uYmVnaW4oKSwKCS8vIAlkaXN0cmlidXRpb25fdGVsbHRhbGVfcm9sbGluZ19wZXJpb2RbaV0uZW5kKCkpOwoJLy8gCS8vY291dDw8IlxuIjw8aTsKCS8vIAlmb3IoaW50IGo9MDsgajwgZGlzdHJpYnV0aW9uX3RlbGx0YWxlX3JvbGxpbmdfcGVyaW9kW2ldLnNpemUoKTtqKyspCgkvLyAJewoJLy8gCQljb3V0PDwiKCI7CgkvLyAJCWNvdXQ8PGk8PCIsIjw8ZGlzdHJpYnV0aW9uX3RlbGx0YWxlX3JvbGxpbmdfcGVyaW9kW2ldW2pdPDwiKSwiOwoJLy8gCX0KCS8vIH0KICAgIHJldHVybiAwOwp9Cg==