제출 #844382

#제출 시각아이디문제언어결과실행 시간메모리
844382vjudge1Nivelle (COCI20_nivelle)C++17
24 / 110
1046 ms16220 KiB
#include <bits/stdc++.h> using namespace std; #define int long long #define pii pair<int,int> #define bg begin #define vi vector<int> #define vvi vector<vi> #define vp vector<pii> #define ppi pair<pii,int> #define endl '\n' #define triple tuple<int,int,int> #define ppp pair<pii,pii> #define pip pair<int,pii> #define vpp vector<ppi> #define sp << " " << #define ff first #define ss second #define F(xxx,n) for (int xxx=1;xxx<=n;++xxx) #define FF(xxx,sss,yyy) for (int xxx=sss;xxx<=yyy;++xxx) #define pb push_back const int MOD = 1e9+7; const int inf = 2e18; struct Node{ int mask,len,L,R; double value; Node(int msk = 0,int l = 0,double v = 1.0,int left=0,int right=0) { mask = msk; value = v; len = l; L = left; R = right; }; }; Node merge(Node a,Node b){ int msk = a.mask|b.mask; int pc = __builtin_popcount(msk); int ln = a.len+b.len; return Node(msk,ln,((double)pc)/(ln),a.L,b.R); } const int N = 1e5; string s; vector<Node> tree(4*N); double best = 1; pii ans = {1,1}; void build(int node,int l,int r) { if (l == r) { //cout << l sp (1<<(s[l-1]-'a')) << endl; tree[node] = Node((1<<(s[l-1]-'a')),1,1,1,1); return; } int m = (l+r) >> 1; build(2*node,l,m); build(2*node+1,m+1,r); tree[node] = merge(tree[2*node],tree[2*node+1]); } Node query(int node,int l,int r,int L,int R) { if (l > R || r < L) return Node(0,0,1,0,0); if (l >= L && r <= R) return tree[node]; int m = (l+r) >> 1; return merge(query(2*node,l,m,L,R),query(2*node+1,m+1,r,L,R)); } void solve() { int n; cin >> n; cin >> s; build(1,1,n); F(i,n) { FF(j,i,n) { double x = query(1,1,n,i,j).value; if (x < best) { ans = {i,j}; best = x; } } } cout << ans.ff sp ans.ss << endl; } signed main() { #ifdef Local freopen("input.in","r",stdin); freopen("input.out","w",stdout); #endif ios_base::sync_with_stdio(0);cin.tie(0); int t = 1; //cin >> t; while (t--) solve(); }
#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...