Submission #1334711

#TimeUsernameProblemLanguageResultExecution timeMemory
1334711Rares선물 (IOI25_souvenirs)C++20
Compilation error
0 ms0 KiB
#include "souvenirs.h"
#include <bits/stdc++.h>
using namespace std;
#define int long long

const int MAXN=110;

int rez[MAXN],nr[MAXN];
set <int> d[MAXN];
int sum[MAXN];

void buy_souvenirs(int n, int p0){
    rez[0]=p0;
    for (int i=1;i<n;++i) rez[i]=-1;
    while (1){
        bool ok=0;
        for (int i=0;i<n;++i){
            if (rez[i]==-1){
                ok=1;
            break;
            }
        }
        if (ok==0) break;

        ok=0;
        for (int i=n-1;i>=0;--i){
            if (rez[i]==-1) ok=1;
            if (rez[i]!=-1 and ok){
                pair <vector <int>,int> p=transaction (rez[i]-1);
                int x=rez[i]-1-p.second;
                vector <int> v=p.first;
                set <int> s;
                for (auto crt:v){
                    nr[crt]++;
                    if (rez[crt]!=-1){
                        x-=rez[crt];
                    }
                    else{
                        s.insert (crt);
                    }
                }
                d[i+1]=s;
                sum[i+1]=x;
                break;
            }
            if (d[i].size ()==1){
                rez[i]=sum[i];
                for (int j=0;j<n;++j){
                    if (d[j].count (i)){
                        sum[j]-=rez[i];
                        d[j].erase (i);
                    }
                }
                break;
            }
            if (d[i].size ()){
                int x=sum[i]/d[i].size ();
                pair <vector <int>,int> p=transaction (x);
                x=x-p.second;
                vector <int> v=p.first;
                set <int> s;
                for (auto crt:v){
                    nr[crt]++;
                    if (rez[crt]!=-1){
                        x-=rez[crt];
                    }
                    else{
                        s.insert (crt);
                    }
                }
                int f=*s.begin ();
                d[f]=s;
                sum[f]=x;
                break;
            }
        }

    }

    for (int i=1;i<n;++i){
        while (nr[i]<i){
            transaction (rez[i]);
            nr[i]++;
        }
    }
}

Compilation message (stderr)

souvenirs.cpp: In function 'void buy_souvenirs(long long int, long long int)':
souvenirs.cpp:29:55: error: conversion from 'pair<vector<int>,[...]>' to non-scalar type 'pair<vector<long long int>,[...]>' requested
   29 |                 pair <vector <int>,int> p=transaction (rez[i]-1);
      |                                           ~~~~~~~~~~~~^~~~~~~~~~
souvenirs.cpp:58:55: error: conversion from 'pair<vector<int>,[...]>' to non-scalar type 'pair<vector<long long int>,[...]>' requested
   58 |                 pair <vector <int>,int> p=transaction (x);
      |                                           ~~~~~~~~~~~~^~~