0227

Done IOI Start at: 2026-2-27 8:00 3.7 hour(s) Host: 45
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N = 1e5+5;
int n,a[N],m,q,tree[N];
vector<int>b[N];
int lst[N],seclst[N];
struct node{
	int l,r,id;
}p[N];
int ans[N];
int lobit(int x){
	return x&-x;
}
void update(int x,int c)
{
	for(int i=x;i>=1;i-=lobit(i)){
		tree[i] = max(tree[i],c);
	}
}
int query(int x)
{
	int res = 0;
	for(int i=x;i<=n;i+=lobit(i)){
		res = max(res,tree[i]); 
	}
	return res;
}
bool cmp(node a,node b){
	if(a.r==b.r)return a.l<b.l;
	else return a.r<b.r;
}
signed main()
{
	freopen("gcd.in","r",stdin);
	freopen("gcd.out","w",stdout);
	cin>>n;
	int maxx = 0;
	for(int i=1;i<=n;i++){
		cin>>a[i];
		maxx = max(maxx,a[i]);
	}
	for(int i=1;i<=maxx;i++){
		for(int j=i;j<=maxx;j+=i){
			b[j].push_back(i);
		}
	}
	cin>>q;
	for(int i=1;i<=q;i++){
		cin>>p[i].l>>p[i].r;
		p[i].id = i;
	}
	sort(p+1,p+q+1,cmp);
	int now = 0;
	for(int i=1;i<=q;i++){
		int L=p[i].l,R=p[i].r;
		while(now<R){
			now++;
			int x = a[now];
		
			for(auto d:b[x]){
				if(lst[d]==0){
					lst[d]=now;
				}
				else if(seclst[d]==0){
					seclst[d]=lst[d];
					lst[d]=now;
					update(seclst[d],d);
				}
				else{
					seclst[d]=lst[d];
					lst[d]=now;
					update(seclst[d],d);
				}
			}
		}
		ans[p[i].id] = query(L);
	}
	for(int i=1;i<=q;i++){
		cout<<ans[i]<<endl;
	}
	return 0;
}
#include <bits/stdc++.h>
using namespace std;
int T;
int k, a, b, c;
double f[51][8][8][8];
int main() {
    freopen("save.in","r",stdin);
    freopen("save.out","w",stdout);
    for (int k = 1; k <= 50; k++) {
        for (int a = 0; a <= 7; a++) {
            for (int b = 0; b <= 7; b++) {
                for (int c = 0; c <= 7; c++) {
                    int t = ((a + b + c) < 7);
                    f[k][a][b][c] += (f[k - 1][a][b][c] + 1) * (1.0 / double(a + b + c + 1));
                    if (a)
                        f[k][a][b][c] += (f[k - 1][a - 1][b][c]) * (a / double(a + b + c + 1));
                    if (b)
                        f[k][a][b][c] += (f[k - 1][a + 1][b - 1][c + t]) * (b / double(a + b + c + 1));
                    if (c)
                        f[k][a][b][c] += (f[k - 1][a][b + 1][c - 1 + t] * (c / double(a + b + c + 1)));
                }
            }
        }
    }
    cin >> T;
    while (T--) {
        cin >> k >> a >> b >> c;
        cout << fixed << setprecision(2) << f[k][a][b][c] << endl;
    }
    return 0;
}
Status
Done
Rule
IOI
Problem
4
Start at
2026-2-27 8:00
End at
2026-2-27 11:42
Duration
3.7 hour(s)
Host
Partic.
45