本文整理汇总了C++中multiset::insert方法的典型用法代码示例。如果您正苦于以下问题:C++ multiset::insert方法的具体用法?C++ multiset::insert怎么用?C++ multiset::insert使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类multiset
的用法示例。
在下文中一共展示了multiset::insert方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: sol
int sol(){
for (int i=1;i<=n;i++)
d[i]=i,
S.insert(w[i]);
int a,b;
while (m--)
{
scanf("%d%d",&a,&b);
a=dsu(a);
b=dsu(b);
if (a!=b)
{
S.erase(S.find(w[a]));
S.erase(S.find(w[b]));
w[a]+=w[b];
w[b]=0;
S.insert(w[a]);
d[b]=a;
}
for (int i=1;i<=n;i++)
cout<<d[i]<<" ";
printf("%d\n",*S.begin());
}
return 0;
}
示例2: main
int main() {
file_r("laundro_matt.txt");
file_w("out.out");
int cas = 0;
cin >> T;
while (T--) {
cin >> l >> n >> m >> d;
s.clear();
rep (i, n) {
cin >> w[i];
s.insert(mp(w[i], w[i]));
}
q.clear();
m = min(l, m);
rep (i, m) q.insert(0);
ans = 0;
rep (i, l) {
iter = s.begin();
a[i] = iter->X;
s.erase(iter);
s.insert(mp(iter->X + iter->Y, iter->Y));
it = q.begin();
q.erase(it);
if (*it <= a[i]) {
ans = max(ans, a[i] + d);
q.insert(a[i] + d);
} else {
ans = max(ans, *it + d);
q.insert(*it + d);
}
}
示例3: main
int main()
{
int n,d,r;
while(scanf("%d%d%d",&n,&d,&r)!=EOF&&n||d||r)
{
int k;
for(int i=1;i<=n;i++)
{
scanf("%d",&k);
s1.insert(k);
}
for(int i=1;i<=n;i++)
{
scanf("%d",&k);
s2.insert(k);
}
int ans=0;
for(int i=1;i<=n;i++)
{
int num=*s1.begin();
int index=d-num;
__typeof(s2.begin()) it=s2.lower_bound(index);
if(it==s2.end())it--;
ans+=r*max(0,num+*it-d);
s1.erase(s1.begin());
s2.erase(it);
}
printf("%d\n",ans);
}
return 0;
}
示例4: main
int main()
{
int n;
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%I64d",&sum[i]);
num[i]=sum[i];
sum[i]+=sum[i-1];
}
sum[n+1]+=sum[n];
s.insert(0);
s.insert(n+1);
ms.insert(-(sum[n+1]-sum[0]));
for(int i=0;i<n;i++)
{
int x;
scanf("%d",&x);
int r=*s.lower_bound(x);
int l=*(--s.lower_bound(x));
s.insert(x);
ms.erase(ms.find(-(sum[r-1]-sum[l])));
ms.insert(-(sum[r-1]-sum[x]));
ms.insert(-(sum[x-1]-sum[l]));
printf("%I64d\n",-(*ms.begin()));
}
return 0;
}
示例5: main
int main() {
int n, q;
scanf("%d %d", &n, &q);
for (int i = 0; i < n; ++i) {
scanf("%d", a+i);
b[i] = a[i];
}
sort(a, a+n);
for (int i = 0; i < n; ++i) {
val.insert(a[i]);
if (i)
dif.insert(a[i] - a[i-1]);
}
while (q--) {
int t;
scanf("%d", &t);
if (t == 2) {
long long ans = *val.rbegin() - *val.begin();
ans -= *dif.begin();
printf("%lld\n", ans);
}
else {
int x, y;
scanf("%d %d", &x, &y);
--x;
if (b[x] != y) {
del(b[x]);
add(b[x] = y);
}
}
}
return 0;
}
示例6: solve
void solve(){
for( int i = 1 ; i <= min( n , m ) ; i ++ ){
done[ i ] = ti[ i ];
S.insert( ti[ i ] );
}
for( int i = m + 1 ; i <= n ; i ++ ){
done[ i ] = *S.begin() + ti[ i ];
S.erase( S.find( *S.begin() ) );
S.insert( done[ i ] );
}
for( int i = 1 ; i <= n ; i ++ )
pmax[ i ] = max( pmax[ i - 1 ] , done[ i ] );
D ans = good[ n ] * pmax[ n ];
for( int i = 1 ; i <= n ; i ++ )
ans += ( good[ i - 1 ] * ( 1.0 - p[ i ] ) ) * pmax[ i ];
// D ans = pmax[ n ];
// for( int i = 1 ; i <= n ; i ++ )
// if( ans > eps )
// ans *= p[ i ];
// else break;
// for( int i = 1 ; i <= n ; i ++ ){
// D tans = pmax[ i ] * ( 1.0 - p[ i ] );
// for( int j = 1 ; j < i ; j ++ )
// if( tans > eps )
// tans *= p[ j ];
// else break;
// ans += tans;
// }
printf( "%.12f\n" , (double)ans );
}
示例7: main
int main(int argc, char const *argv[])
{
scanf("%d", &n);
for (int i = 0; i < n; ++i) {
scanf("%I64d", A + i);
s += A[i];
ps[i + 1] = ps[i] + A[i];
}
sum.insert(s);
qu.insert(Pii(n, 0));
for (int i = 0, p; i < n; ++i) {
scanf("%d", &p); --p;
auto it = qu.upper_bound(Pii(p, 0));
// cout << it->second << " " << it->first << endl;
ll tmp = ps[it->first] - ps[it->second];
// cout << "tmp " << tmp << endl;
sum.erase(sum.lower_bound(tmp));
tmp = ps[p] - ps[it->second];
// cout << "tmp " << tmp << endl;
sum.insert(tmp); qu.insert(Pii(p, it->second));
tmp = ps[it->first] - ps[p + 1];
// cout << "tmp " << tmp << endl;
sum.insert(tmp); qu.insert(Pii(it->first, p + 1));
qu.erase(it);
printf("%I64d\n", *sum.rbegin());
}
return 0;
}
示例8: insert
void insert(int num)
{
if(median == -1) median = num;
else
{
if(num < median)
small_number_set.insert(num);
else
big_number_set.insert(num);
if(small_number_set.size() + 1 < big_number_set.size())
{
small_number_set.insert(median);
auto median_iter = big_number_set.begin();
median = *median_iter;
big_number_set.erase(median_iter);
}
else if(small_number_set.size() > big_number_set.size())
{
big_number_set.insert(median);
auto median_iter = prev(small_number_set.end());
median = *median_iter;
small_number_set.erase(median_iter);
}
}
}
示例9: main
int main(){
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cin >> t;
while(t--){
S.clear();
cin >> n;
for(int i=0;i<n;i++){
cin >> x;
it = S.upper_bound(x);
if(it==S.end()){
S.insert(x);
}
else{
S.erase(it);
S.insert(x);
//(*it) = x;
}
}
cout << S.size() << " ";
for(multiset<int>::iterator it=S.begin();it!=S.end();it++){
cout << (*it) << " ";
}
cout << endl;
}
return 0;
}
示例10: try_to_add_or_delete
void try_to_add_or_delete(cl_term* Sp, cl_term* S)
{
string Sp_str = Sp->conv2str();
string S_str = S->conv2str();
Sp_nchecker.insert(Sp_str);
S_nchecker.insert(S_str);
if (Sp_nchecker.count(Sp_str) >= max_SS_n || S_nchecker.count(S_str) >= max_SS_n)
{
multiset_delete_one(Sp_nchecker, Sp_str);
multiset_delete_one(S_nchecker, S_str);
delete Sp;
delete S;
return;
}
if (uniqchecker.try_to_add(Sp_str, S_str))
{
population.push_back(make_cl_ssprimega_member(Sp, S));
}
else
{
multiset_delete_one(Sp_nchecker, Sp_str);
multiset_delete_one(S_nchecker, S_str);
delete Sp;
delete S;
return;
}
}
示例11: main
int main()
{
srand(time(NULL));
for(int i=6; i<21; ++i) {
char fin[55],out[55];
sprintf(fin,"teste/grader_test%d.in",i);
sprintf(out,"teste/grader_test%d.ok",i);
ofstream in(fin);
ofstream g(out);
n=rand()%DN+1;k=rand()%n+1;
in<<n<<' '<<k<<'\n';
for(int i=1; i<=n; ++i) {
p[i]=rand()%DK+1; c[i]=rand()%DK+1;
in<<p[i]<<' '<<c[i]<<'\n';
}
pt=0; rst.clear(); sol.clear(); ssol=0; rez=0;
for(int i=1; i<=k; ++i) {
pt+=p[i];
rst.insert(p[i]+c[i]);
}
rez=max(rez,pt);
for(int i=k+1; i<=n; ++i) {
pt+=p[i];
rst.insert(p[i]+c[i]);
ssol+=*rst.begin();
sol.insert(*rst.begin());
rst.erase(rst.begin());
bst[i]=pt-ssol;
rez=max(rez,bst[i]);
}
g<<rez;
}
return 0;
}
示例12: main
int main() {
#ifndef ONLINE_JUDGE
freopen("519b.in", "r", stdin);
freopen("519b.out", "w", stdout);
#endif
cin >> n;
for(int i = 1 ; i <= n ; ++ i) {
int x;
cin >> x;
s1.insert(x);
}
for(int i = 1 ; i < n ; ++ i) {
int x;
cin >> x;
s1.erase(s1.find(x));
s2.insert(x);
}
cout << *s1.begin() << '\n';
for(int i = 1 ; i < n - 1 ; ++ i) {
int x;
cin >> x;
s2.erase(s2.find(x));
}
cout << *s2.begin() << '\n';
}
示例13: main
int main() {
int n, elm, k, t;
cin >> n >> t >> k;
for (int i = 0; i < n; ++i) {
cin >> elm;
v.push_back(elm);
}
for (int i = 0; i < k; ++i) {
S.insert(v[i]);
}
it = S.rbegin();
ans.push_back(*it);
for (int i = k; i < n; ++i) {
S.erase(S.find(v[i - k]));
S.insert(v[i]);
it = S.rbegin();
ans.push_back(*it);
}
int res = 0;
for (int i = 0; i < ans.size(); ++i) {
if (ans[i] <= t)
++res;
}
cout << res;
return 0;
}
示例14: main
int main () {
scanf("%d %d", &n, &k);
for (int i = 0; i < n; i++) {
scanf("%d %d", x+i, y+i);
p[i] = i;
}
int res = 0;
sort(p, p+n, cmp_t);
for (int i = 0; i < k; i++)
s.insert(0);
for (int i = 0; i < n; i++) {
it = s.upper_bound(x[p[i]]);
if (it == s.begin())
continue;
--it;
res++;
s.erase(it);
s.insert(y[p[i]]);
}
printf("%d\n", res);
}
示例15: update
void update(int a, int b) {
if (f[a] != -1) {
int temp = *SS[f[a]][c[a]].begin();
SS[f[a]][c[a]].erase(SS[f[a]][c[a]].find(d[a]));
if (SS[f[a]][c[a]].empty()) SS[f[a]].erase(c[a]);
if (c[f[a]] != c[a]) {
S.erase(S.find(temp));
if (SS[f[a]].find(c[a]) != SS[f[a]].end() && !SS[f[a]][c[a]].empty())
S.insert(*SS[f[a]][c[a]].begin());
}
if (c[f[a]] != b) {
if (!SS[f[a]][b].empty()) {
if (d[a] < *SS[f[a]][b].begin()) {
S.erase(S.find(*SS[f[a]][b].begin()));
S.insert(d[a]);
}
} else {
S.insert(d[a]);
}
}
SS[f[a]][b].insert(d[a]);
}
if (SS[a].find(c[a]) != SS[a].end()) S.insert(*SS[a][c[a]].begin());
if (SS[a].find(b) != SS[a].end()) S.erase(S.find(*SS[a][b].begin()));
c[a] = b;
}