Submission #1200724

#TimeUsernameProblemLanguageResultExecution timeMemory
1200724MighilonMagic Show (APIO24_show)C++20
Compilation error
0 ms0 KiB
#include <bits/stdc++.h> using namespace std; #ifdef DEBUG #include "../Library/debug.h" #else #include "Alice.h" #define dbg(x...) #endif typedef long long ll; typedef long double ld; typedef pair<int, int> pi; typedef pair<ll, ll> pl; typedef vector<int> vi; typedef vector<bool> vb; typedef vector<ll> vl; typedef vector<pi> vpi; typedef vector<pl> vpl; #define FOR(i, a, b) for (int i = (a); i < (b); ++i) #define F0R(i, a) for (int i = 0; i < (a); ++i) #define FORd(i, a, b) for (inBobt i = (b) - 1; i >= (a); --i) #define F0Rd(i, a) for (int i = (a) - 1; i >= 0; --i) #define trav(a, x) for (auto& a : x) #define f first #define s second #define pb push_back #define sz(x) (int)(x).size() #define all(x) x.begin(), x.end() const char nl = '\n'; const int INF = 1e9; const ll MOD = 998244353; const int mxN = 3e5+5; #define DEBUG #ifdef DEBUG mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); int N, M; ll setN(int x){ N=x; return M=uniform_int_distribution(1,int(1e18))(rng); } #endif vpi Alice(){ int n = 5000; ll x = setN(n); vpi res; FOR(i,2,n+1){ res.pb({(x%(i-1))+1,i}); } return res; } namespace BOB{ ll ex_gcd(ll a,ll b,ll& x,ll& y){ if(b==0){ x=1; b=0; return a; } ll x1=0,y1=0; ll d=ex_gcd(b,a%b,x1,y1); x=y1; y=x1-a/b*y1; return d; } ll mul(ll a, ll b, ll m){ ll s=1; if(b<0)s=-1,b*=-1; ll ans=0; while(b>0){ if(b%2==1)ans=(ans+s*a)%m; b>>=1; a=(a+a)%m; } return ans; } ll Bob(vpi v){ ll num[19]; num[0]=1; F0R(i,18) num[i+1]=num[i]*10; auto check=[&](ll a, ll b){ int x=0,y=0; F0R(i,19)if(a<num[i]){ x=i; break; } if(a&&!x) x=19; if(b&&!y) y=19; F0R(i,19)if(b<num[i]){ y=i; break; } return (x+y)<=20; }; ll res=0; ll m=1; trav(i,v){ i.f-=1; i.s-=1; ll x, y,d; d=ex_gcd(m,i.s,x,y); assert((res-i.f)%d==0); if(!check(m,i.s)) return res; // res = res+(i.f-res)/d*x%(i.s/d)*m; res = res + mul(mul((i.f-res)/d, x,(i.s/d)),m,(m/d*i.s)); m = m/d*i.s; res%=m; if(res<0)res+=m; } return res; } } #ifdef DEBUG int main(){ auto gen=[&](ll a, ll b){ return uniform_int_distribution(a,b)(rng); }; int cnt=0; while(1){ vpi edges = Alice(); // dbg(edges) shuffle(all(edges),rng); int rem=gen(1,N/2); dbg(++cnt,rem); edges.erase(edges.end()-rem, edges.end()); // dbg(edges) ll ans = BOB::Bob(edges); if(ans != M){ dbg(N,M,ans); return 0; } } return 1; } #endif
#include <bits/stdc++.h> using namespace std; #ifdef DEBUG #include "../Library/debug.h" #else #include "Bob.h" #define dbg(x...) #endif typedef long long ll; typedef long double ld; typedef pair<int, int> pi; typedef pair<ll, ll> pl; typedef vector<int> vi; typedef vector<bool> vb; typedef vector<ll> vl; typedef vector<pi> vpi; typedef vector<pl> vpl; #define FOR(i, a, b) for (int i = (a); i < (b); ++i) #define F0R(i, a) for (int i = 0; i < (a); ++i) #define FORd(i, a, b) for (int i = (b) - 1; i >= (a); --i) #define F0Rd(i, a) for (int i = (a) - 1; i >= 0; --i) #define trav(a, x) for (auto& a : x) #define f first #define s second #define pb push_back #define sz(x) (int)(x).size() #define all(x) x.begin(), x.end() const char nl = '\n'; const int INF = 1e9; const int MOD = 1e9 + 7; ll ex_gcd(ll a,ll b,ll& x,ll& y){ if(b==0){ x=1; b=0; return a; } ll x1=0,y1=0; ll d=ex_gcd(b,a%b,x1,y1); x=y1; y=x1-a/b*y1; return d; } ll mul(ll a, ll b, ll m){ ll s=1; if(b<0)s=-1,b*=-1; ll ans=0; while(b>0){ if(b%2==1)ans=(ans+s*a)%m; b>>=1; a=(a+a)%m; } return ans; } ll Bob(vpi v){ ll num[19]; num[0]=1; F0R(i,18) num[i+1]=num[i]*10; auto check=[&](ll a, ll b){ int x=0,y=0; F0R(i,19)if(a<num[i]){ x=i; break; } if(a&&!x) x=19; if(b&&!y) y=19; F0R(i,19)if(b<num[i]){ y=i; break; } return (x+y)<=20; }; ll res=0; ll m=1; trav(i,v){ i.f-=1; i.s-=1; ll x, y,d; d=ex_gcd(m,i.s,x,y); assert((res-i.f)%d==0); if(!check(m,i.s)) return res; // res = res+(i.f-res)/d*x%(i.s/d)*m; res = res + mul(mul((i.f-res)/d, x,(i.s/d)),m,(m/d*i.s)); m = m/d*i.s; res%=m; if(res<0)res+=m; } return res; }

Compilation message (stderr)

# 1번째 컴파일 단계

/usr/bin/ld: /tmp/cck5ouBw.o: in function `setN(int)':
grader_alice.cpp:(.text+0x80): multiple definition of `setN(int)'; /tmp/cchbxGul.o:Alice.cpp:(.text+0x7a0): first defined here
/usr/bin/ld: /tmp/cck5ouBw.o: in function `main':
grader_alice.cpp:(.text.startup+0x0): multiple definition of `main'; /tmp/cchbxGul.o:Alice.cpp:(.text.startup+0x0): first defined here
collect2: error: ld returned 1 exit status