Submission #1251081

#TimeUsernameProblemLanguageResultExecution timeMemory
1251081abcdxyz123Souvenirs (IOI25_souvenirs)C++17
Compilation error
0 ms0 KiB
#include "souvenirs.h" #include<bits/stdc++.h> using namespace std; #define ll long long #define vi vector<ll> #define fi first #define se second vector<ll>p; vector<int>cnt; int Refresh(ll &sum,vector<int>&cur) { int old=cur.size(); set<int>s; for(int v:cur) { s.insert(v); } for(int v:cur) { if(p[v]!=-1) { sum-=p[v]; s.erase(v); } } cur.clear(); for(int v:s)cur.push_back(v); return (old>cur.size()); } void dfs(int u,ll sum,vector<int>cur) { /* cout<<"+>"<<u<<'\n'; cout<<sum<<'\n'; for(int x:cur)cout<<x<<' '; cout<<'\n'; */ if(cur.size()==1) { p[u]=sum; return ; } Refresh(sum,cur); while(true) { ll nxt_sum=sum/cur.size(); while(true) { pair<vi,ll>nxt=transaction(nxt_sum); for(int v:nxt.fi)cnt[v]++; dfs(nxt.fi[0],nxt_sum-nxt.se,nxt.fi); if(Refresh(sum,cur))break; nxt_sum=p[nxt.fi[0]]-1; } if(cur.size()==1) { p[u]=sum; break; } } } void buy_souvenirs(int n,ll p0) { p=vector<ll>(n,-1); p[0]=p0; cnt=vector<int>(n,0); for(int i=1;i<n;i++) { if(p[i]==-1) { ll nxt_sum=p[i-1]-1; pair<vi,ll>nxt=transaction(nxt_sum); for(int v:nxt.fi)cnt[v]++; nxt_sum-=nxt.se; Refresh(nxt_sum,nxt.fi); dfs(nxt.fi[0],nxt_sum,nxt.fi); } } for(int i=1;i<n;i++) { while(cnt[i]<i) { transaction(p[i]); cnt[i]++; } } }

Compilation message (stderr)

souvenirs.cpp: In function 'void dfs(int, long long int, std::vector<int>)':
souvenirs.cpp:49:39: error: conversion from 'pair<vector<int>,[...]>' to non-scalar type 'pair<vector<long long int>,[...]>' requested
   49 |             pair<vi,ll>nxt=transaction(nxt_sum);
      |                            ~~~~~~~~~~~^~~~~~~~~
souvenirs.cpp:6:12: error: could not convert 'nxt.std::pair<std::vector<long long int>, long long int>::first' from 'vector<long long int>' to 'vector<int>'
    6 | #define fi first
      |            ^
      |            |
      |            vector<long long int>
souvenirs.cpp:51:46: note: in expansion of macro 'fi'
   51 |             dfs(nxt.fi[0],nxt_sum-nxt.se,nxt.fi);
      |                                              ^~
souvenirs.cpp: In function 'void buy_souvenirs(int, long long int)':
souvenirs.cpp:72:39: error: conversion from 'pair<vector<int>,[...]>' to non-scalar type 'pair<vector<long long int>,[...]>' requested
   72 |             pair<vi,ll>nxt=transaction(nxt_sum);
      |                            ~~~~~~~~~~~^~~~~~~~~
souvenirs.cpp:6:12: error: invalid initialization of reference of type 'std::vector<int>&' from expression of type 'std::vector<long long int>'
    6 | #define fi first
      |            ^
souvenirs.cpp:75:33: note: in expansion of macro 'fi'
   75 |             Refresh(nxt_sum,nxt.fi);
      |                                 ^~
souvenirs.cpp:10:33: note: in passing argument 2 of 'int Refresh(long long int&, std::vector<int>&)'
   10 | int Refresh(ll &sum,vector<int>&cur)
      |                     ~~~~~~~~~~~~^~~
souvenirs.cpp:6:12: error: could not convert 'nxt.std::pair<std::vector<long long int>, long long int>::first' from 'vector<long long int>' to 'vector<int>'
    6 | #define fi first
      |            ^
      |            |
      |            vector<long long int>
souvenirs.cpp:76:39: note: in expansion of macro 'fi'
   76 |             dfs(nxt.fi[0],nxt_sum,nxt.fi);
      |                                       ^~