Submission #1314195

#TimeUsernameProblemLanguageResultExecution timeMemory
1314195AhmadAlhussain선물 (IOI25_souvenirs)C++20
Compilation error
0 ms0 KiB
#include<bits/stdc++.h> using namespace std; pair<vector<int>,long long> transaction(long long M); int cnt=0; pair<vector<int>,long long>c[105]; int k[105]; long long p1[105]; int let[105]; void remove(vector<int>v) { for(int i:v) { let[i]--; } } void buy_souvenirs(int N,long long p0) { for(int i=0;i<N;i++) { let[i]=i; } long long last=p0-1; while(true) { //cout<<last<<' '; auto [v,r]=transaction(last); remove(v); c[v[0]]={v,r}; k[v[0]]=last; long long sum=last-r; if(v.size()==1&&v.back()==N-1) { p1[N-1]=sum; break; } if(v.size()==1) { last=sum-1; } else { last=sum/long(v.size())-1; } } //cout<<'\n'; for(int i=N-2;i>=2;i--) { if(c[i].first.empty()) { //cout<<i<<' '<<2*p1[i+1]<<' '; auto [v,r]=transaction(2*p1[i+1]); remove(v); //cout<<2*p1[i+1]<<' '; p1[i]=2*p1[i+1]-r; for(int j=1;j<v.size();j++) { p1[i]-=p1[v[j]]; } //cout<<i<<' '<<p1[i]<<'3'<<'\n';; } else { auto [v,r]=c[i]; //cout<<i<<' '<<v.size()<<' '<<r<<' '<<k[i]<<'\n'; p1[i]=k[i]-r; //cout<<p1[i]<<' '; for(int j=1;j<v.size();j++) { //cout<<i<<' '; p1[i]-=p1[v[j]]; } //cout<<i<<' '<<p1[i]<<'\n'; //cout<<i<<' '<<p1[i]<<'\n';; } } cout<<'\n'; for(int i=2;i<N;i++) {//cout<<i<<' '<<p1[i]<<'\n'; for(int j=0;j<let[i];j++) { transaction(p1[i]); } } } namespace { const int CALLS_CNT_LIMIT = 10'000; int calls_cnt; int N; std::vector<long long> P; std::vector<int> Q; void quit(const char* message) { printf("%s\n", message); exit(0); } } // namespace std::pair<std::vector<int>, long long> transaction(long long M) { calls_cnt++; if (calls_cnt > CALLS_CNT_LIMIT) quit("Too many calls"); if (M >= P[0] || M < P[N - 1]) { //cout<<M<<' '; quit("Invalid argument"); } std::vector<int> L; long long R = M; for (int i = 0; i < N; i++) { if (R >= P[i]) { R -= P[i]; Q[i]++; L.push_back(i); } } return {L, R}; } int main() { assert(1 == scanf("%d", &N)); P.resize(N); for (int i = 0; i < N; i++) assert(1 == scanf("%lld", &P[i])); fclose(stdin); Q.assign(N, 0); calls_cnt = 0; buy_souvenirs(N, P[0]); for (int i = 0; i < N; i++) printf("%s%d", i ? " " : "", Q[i]); printf("\n"); fclose(stdout); return 0; }

Compilation message (stderr)

/usr/bin/ld: /tmp/ccdMCszO.o: in function `main':
stub.cpp:(.text.startup+0x0): multiple definition of `main'; /tmp/ccJFwZwa.o:souvenirs.cpp:(.text.startup+0x0): first defined here
/usr/bin/ld: /tmp/ccdMCszO.o: in function `transaction(long long)':
stub.cpp:(.text+0x200): multiple definition of `transaction(long long)'; /tmp/ccJFwZwa.o:souvenirs.cpp:(.text+0x90): first defined here
collect2: error: ld returned 1 exit status