Submission #872712

#TimeUsernameProblemLanguageResultExecution timeMemory
872712vjudge1Nivelle (COCI20_nivelle)C++17
38 / 110
226 ms9048 KiB
#include<bits/stdc++.h> using namespace std; #pragma GCC optimize("O3") #define tof_io ios_base::sync_with_stdio(false);cin.tie(0) , cout.tie(0); #define double long double #define int long long #define pb push_back #define all(x) x.begin(),x.end() #define endl '\n' const int mod = 998244353; //998244353 1e9+7 1e9+9 const int inf = 1e18; const int N = 1e6 + 23; const int lg = 23; int fac[N]; int inv[N]; int dnt_pow (int a, int b, int md = mod){int ans = 1; while(b){if(b&1){ans = (a*ans)%md;}a = (a*a)%md;b >>= 1;}return ans ;} void dnt_bld (){fac[0] = 1; inv[0] = dnt_pow(fac[0],mod-2) ;for(int i = 1 ; i < N ; i++) {fac[i] = (fac[i-1] * i) % mod;inv[i] = dnt_pow( fac[i] , mod-2);}} int dnt_ncr (int r,int n){if(r>n) return 0; return fac[n] * inv[r] % mod * inv[n-r] % mod;} bool cmp (pair<int,int> a, pair<int,int> b){ return a.second > b.second; } char x[6] = {'a','b','c','d','e'}; vector<int> v ; int vis[10]; double ans = 1e18; int L,R; int freq[N][6],n; bool ok(int mid,int l) { if(l + mid - 1 >= n) return 0; for(int i = 0; i < 5; i++) { int x; if(l == 0) x = freq[l+mid-1][i]; else x = freq[l+mid-1][i] - freq[l-1][i]; if(vis[i]==0 and x!=0) return 0; } return 1; } void bt(int index) { if(index == 5) { for(int i = 0 ; i < n ;i++) { int l=0; int r=n; while(l < r) { int mid = ( l + r + 1 ) / 2; if(ok(mid,i) == 1) { l = mid; } else { r=mid-1; } } double cnt1 = 0; for(int i = 0 ; i < 5 ; i++) if(vis[i]) cnt1++; double len=l; double res = cnt1 / len; if(cnt1/l < ans) { L = i; R = i + len - 1; ans = res; } } return ; } vis[x[index]-'a'] = 1; bt(index + 1); vis[x[index]-'a'] = 0; bt(index + 1); } int32_t main() { cin >> n; string s; cin >> s; for(int j = 0; j < 5; j++) { freq[0][j]=(j==(s[0]-'a')); } for(int i = 1; i < n; i++) { for(int j = 0; j < 5; j++) { freq[i][j]=freq[i-1][j]+(j==(s[i]-'a')); } } bt(0); cout << L + 1 <<' ' << R + 1 ; }

Compilation message (stderr)

nivelle.cpp: In function 'bool ok(long long int, long long int)':
nivelle.cpp:32:5: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
   32 |     if(l + mid - 1 >= n)
      |     ^~
nivelle.cpp:35:2: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if'
   35 |  for(int i = 0; i < 5; 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...