Submission #1097240

#TimeUsernameProblemLanguageResultExecution timeMemory
1097240Dreamy_lovesperCryptography (NOI20_crypto)C++17
14 / 100
1074 ms54400 KiB
#include<bits/stdc++.h> using namespace std; namespace std { // #include<Love> using ll=long long; using str=string; using int128=__int128_t; using ld=long double; typedef unsigned int ui; typedef unsigned long long ull; #define Love<3 HerLoveForMeJustaDream } #define Lovesper_ ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0); #define pll pair<ll,ll> #define mll map<ll,ll> #define vll vector<ll> #define pb push_back #define all(c) c.begin(),c.end() #define fi first #define se second #define debug cout<<"I Love You\n"; #define fu(i,a,b) for(ll i=a;i<=b;i++) #define fd(i,a,b) for(int i=a;i>=b;i--) #define fa(i,s) for(auto&i:s) #define Bitc(x,i) (((x)>>(i))&1) #define _log(_x) 63-__builtin_clzll(_x) #define LoveTime chrono::steady_clock::now().time_since_epoch().count() const pll dxy4[]={{-1,0},{0,-1},{0,1},{1,0}}; const pll dxy8[]={{-1,-1},{-1,0},{-1,1},{0,-1},{0,1},{1,-1},{1,0},{1,1}}; constexpr ll Mod=1e9+7; constexpr ll mxn=1e6+7,mxm=3e3+7; constexpr long long inf=(1ll<<31); constexpr ll lnf=(1ll<<60); struct __TS { ~__TS() { // cerr<<"Time elapsed: "<<clock()*1.0/CLOCKS_PER_SEC<<'\n'; } }__ts; mt19937 rng(LoveTime); #define setup ((1<<3)-1>>1) void OpenLove(const str&name){ // I'm So Lonely. I am Trying To Get Out This Lonely With Her Love Lovesper_ if(fopen((name+".inp").c_str(),"r")){ // freopen((name+".test").c_str(),"r",stdin); freopen((name+".inp").c_str(),"r",stdin); freopen((name+".out").c_str(),"w",stdout); } } template<class X,class Y>bool maximize(X&x,const Y&y){X eps=1e-18;if(x+eps<y){x=y;return 1;}return 0;} template<class X,class Y>bool minimize(X&x,const Y&y){X eps=1e-18;if(x>y+eps){x=y;return 1;}return 0;} ostream&operator<<( std::ostream& dest, __int128_t value){ ostream::sentry s(dest);__uint128_t tmp=value<0?-value:value; char buffer[128];char*d=end(buffer); do{d--;*d="0123456789"[tmp%10];tmp/=10;}while(tmp); if(value<0)d--,*d='-';ll len=end(buffer)-d; if(dest.rdbuf()->sputn(d,len)!=len)dest.setstate(ios_base::badbit); return dest; } struct custom_hash{ size_t operator()(uint64_t x)const{ static const uint64_t HashRand=LoveTime; x^=HashRand;return x^(x>>16); }}; int64_t add(ll&a,ll b){a+=b;if(a>=Mod)a%=Mod;while(a<0)a+=Mod;return a;} int64_t mul(ll&a,ll b,ll mod){a=1ll*a*b%mod;return a;} int64_t mpow(ll a,ll b,ll mod){ll ans=1;for(;b;b>>=1,a=mul(a,a,mod))if(b&1)ans=mul(ans,a,mod);return ans;} ll n,m,f[mxn],g[mxn]; vll graph[mxn]; void Lovesper(const ll&TestCase){ cin>>n; ll LoveSub3_1=1,LoveSub3_2=1; vll c; fu(i,1,n){ ll x;cin>>x;g[i]=x; LoveSub3_1&=(g[i]>g[i-1]); } f[0]=1; fu(i,1,n+7)f[i]=(f[i-1]*i)%Mod; fd(i,n-1,1)LoveSub3_2&=(g[i]>g[i+1]); struct Love1{ function<void()>DreamyLove=[&](){ if(g[1]<=g[2])return void(cout<<1); cout<<2; }; }; struct Love2{ function<void()>DreamyLove=[&](){ vll c; fu(i,1,n)c.pb(g[i]); sort(all(c)); ll j=0; do{ auto chk=[&](){ fu(i,1,n)if(c[i-1]!=g[i])return 0; return 1; }; j++; if(chk())return void(cout<<j); }while(next_permutation(all(c))); }; }; struct Love3{ function<void(ll)>DreamyLove=[&](ll a){ if(a)return void(cout<<1); cout<<f[n]; }; }; struct Love4{ function<void()>DreamyLove=[&](){ ll j; fu(i,3,n)if(g[i]!=g[i-1]+1){j=i-2;break;} cout<<(j*f[n-1]+1)%Mod; }; }; struct Love56{ function<void()>DreamyLove=[&](){ mll mlp; ll sad=1; fu(k,1,n){ mll mp;vll c; fu(i,1,n)if(mlp.find(g[i])==mlp.end())c.pb(g[i]); sort(all(c)); ll j=k; fu(i,0,c.size()-1)mp[c[i]]=j++; add(sad,((mp[g[k]]-k)*f[n-k]%Mod)); mlp[g[k]]=1; } cout<<sad; }; }; // if(n==2)(new Love1())->DreamyLove(); // else if(n<=8)(new Love2())->DreamyLove(); // else if(LoveSub3_1||LoveSub3_2)(new Love3())->DreamyLove(LoveSub3_1); // else (new Love4())->DreamyLove(); // (new Love2())->DreamyLove(); // cout<<'\n'; // debug (new Love56())->DreamyLove(); } signed main(int argc, char const *argv[]){ OpenLove("lovesper"); int tt=1; // cin>>tt; for(ll i=1;i<=tt;i++){ Lovesper(i); if(i<tt)cout<<'\n'; } return false; }

Compilation message (stderr)

Crypto.cpp:14:13: warning: ISO C++11 requires whitespace after the macro name
   14 |     #define Love<3 HerLoveForMeJustaDream
      |             ^~~~
Crypto.cpp: In function 'std::ostream& operator<<(std::ostream&, __int128)':
Crypto.cpp:67:5: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
   67 |     if(value<0)d--,*d='-';ll len=end(buffer)-d;
      |     ^~
Crypto.cpp:67:27: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if'
   67 |     if(value<0)d--,*d='-';ll len=end(buffer)-d;
      |                           ^~
Crypto.cpp: In lambda function:
Crypto.cpp:26:31: warning: comparison of integer expressions of different signedness: 'std::ll' {aka 'long long int'} and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   26 | #define fu(i,a,b) for(ll i=a;i<=b;i++)
......
  139 |                 fu(i,0,c.size()-1)mp[c[i]]=j++;
      |                    ~~~~~~~~~~~~~~
Crypto.cpp:139:17: note: in expansion of macro 'fu'
  139 |                 fu(i,0,c.size()-1)mp[c[i]]=j++;
      |                 ^~
Crypto.cpp: In function 'void OpenLove(const str&)':
Crypto.cpp:56:15: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   56 |        freopen((name+".inp").c_str(),"r",stdin);
      |        ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Crypto.cpp:57:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   57 |         freopen((name+".out").c_str(),"w",stdout);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...