Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
28333 | LYLAKIOI | 【BJ】T3 | C++ | 解答错误 | 30 | 1000 MS | 252 KB | 1525 | 2024-04-14 14:18:19 |
#include<bits/stdc++.h> #define up(i,l,r) for(int i=(l);i<=(r);++i) #define down(i,l,r) for(int i=(l);i>=(r);--i) #define p_b push_back using namespace std; typedef long long ll; const int maxn=1e6+10,mod=1e9+7; inline ll read(){ ll x=0;short t=1; char ch=getchar(); while(ch<'0'||ch>'9'){ if(ch=='-')t=-1;ch=getchar(); }while(ch>='0'&&ch<='9')x=x*10+ch-'0',ch=getchar(); return x*t; } int n,m; struct node { int d,x; }d[maxn]; ll calc(int S){ ll g=0; map<int,int>mp; down(i,n-1,0)if((S>>i)&1){ g+=d[i+1].x;int w=d[i+1].d; up(j,2,w)if(w%j==0){ int ct=0;while(w%j==0)w/=j,ct++; mp[j]=max(mp[j],ct); } } down(i,n-1,0)if(!((S>>i)&1)){ int w=d[i+1].d; bool fl=1; up(j,2,w)if(w%j==0){ int ct=0;while(w%j==0)w/=j,ct++; if(mp.count(j)&&mp[j]>=ct); else fl=0; } if(fl)return -1e18; }return g; } void slv(){ n=read(); up(i,1,n){ int x=read(),val=read(); bool fd=1; up(j,1,m)if(d[j].d==x){ d[j].x+=val;fd=0; break; } if(fd){ d[++m].d=x;d[m].x=val; } } n=m; ll mx=-1e18; up(i,0,(1<<n)-1)mx=max(mx,calc(i)); cout<<mx; } int main(){ // freopen("sequence.in","r",stdin); // freopen("sequence.out","w",stdout); slv(); fclose(stdin); fclose(stdout); return 0; }