Advertisement
Guest User

Untitled

a guest
Mar 27th, 2021
477
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.95 KB | None | 0 0
  1. #pragma GCC optimize ("O3")
  2. #pragma GCC target ("sse4")
  3.  
  4. #include <bits/stdc++.h>
  5.  
  6. using namespace std;
  7.  
  8. typedef long long ll;
  9. typedef long double ld;
  10. typedef complex<ld> cd;
  11.  
  12. typedef pair<int, int> pi;
  13. typedef pair<ll,ll> pl;
  14. typedef pair<ld,ld> pd;
  15.  
  16. typedef vector<int> vi;
  17. typedef vector<ld> vd;
  18. typedef vector<ll> vl;
  19. typedef vector<pi> vpi;
  20. typedef vector<pl> vpl;
  21. typedef vector<cd> vcd;
  22.  
  23. #define FOR(i, a, b) for (int i=a; i<(b); i++)
  24. #define F0R(i, a) for (int i=0; i<(a); i++)
  25. #define FORd(i,a,b) for (int i = (b)-1; i >= a; i--)
  26. #define F0Rd(i,a) for (int i = (a)-1; i >= 0; i--)
  27. #define trav(a,x) for (auto& a : x)
  28. #define uid(a, b) uniform_int_distribution<int>(a, b)(rng)
  29.  
  30. #define sz(x) (int)(x).size()
  31. #define mp make_pair
  32. #define pb push_back
  33. #define f first
  34. #define s second
  35. #define lb lower_bound
  36. #define ub upper_bound
  37. #define all(x) x.begin(), x.end()
  38. #define ins insert
  39.  
  40. template<class T> bool ckmin(T& a, const T& b) { return b < a ? a = b, 1 : 0; }
  41. template<class T> bool ckmax(T& a, const T& b) { return a < b ? a = b, 1 : 0; }
  42.  
  43. mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
  44.  
  45. const int MOD = 1000000007;
  46. const char nl = '\n';
  47. const int MX = 100001; //check the limits, dummy
  48.  
  49. void solve() {
  50. int N = 100, M = 10000;
  51. string A[N];
  52. F0R(i, N) cin >> A[i];
  53. int cnt[M]; F0R(i, M) cnt[i] = 0;
  54. F0R(i, N) F0R(j, M) cnt[j] += A[i][j] - '0';
  55. vpi val(M);
  56. F0R(i, M) val[i] = {cnt[i], i};
  57. sort(all(val));
  58. reverse(all(val));
  59. int buck[M]; F0R(i, M) buck[val[i].s] = i/(M/50);
  60. ld corr[N];
  61. F0R(i, N) {
  62. int num[50];
  63. F0R(j, 50) num[j] = 0;
  64. F0R(j, M) num[buck[j]] += A[i][j] - '0';
  65. ld bestNot = 1e10, bestCheat = 1e10;
  66. corr[i] = 0;
  67. for (ld prob = -3; prob < 3; prob += .06) {
  68. ld a = 0, b = 0;
  69. F0R(j, 50) {
  70. ld cur = -3 + .06;
  71. cur += j * .12;
  72. ld p = exp(cur-prob); p = 1/(1+p);
  73. a += (p*200-num[j])*(p*200-num[j]);
  74. ld p2 = exp(cur-prob); p2 = 0.5+0.5/(1+p2);
  75. b += (p2*200-num[j])*(p2*200-num[j]);
  76. }
  77. ckmin(bestNot, a);
  78. ckmin(bestCheat, b);
  79. }
  80. /*F0R(j, 50) {
  81. if (i == 47 || i == 58) {
  82. cout << num[j] << " ";
  83. }
  84. }
  85. cout << nl;*/
  86. //cout << bestNot << " " << bestCheat << " " << i << nl;
  87. corr[i] = log(bestCheat) - log(bestNot);
  88. //corr[i] = bestCheat;
  89. }
  90. int ans = 0;
  91. FOR(i, 1, N) {
  92. if (corr[ans] > corr[i]) ans = i;
  93. }
  94. cout << ans+1 << nl;
  95. }
  96.  
  97. int main() {
  98. ios_base::sync_with_stdio(0); cin.tie(0);
  99.  
  100. int T; cin >> T;
  101. int P; cin >> P;
  102. FOR(i, 1, T+1) {
  103. cout << "Case #" << i << ": ";
  104. solve();
  105. }
  106.  
  107. return 0;
  108. }
  109.  
  110. // read the question correctly (ll vs int)
  111. // template by bqi343
  112.  
  113.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement