Submission #1077292

#TimeUsernameProblemLanguageResultExecution timeMemory
1077292khactrung1912Lozinke (COCI17_lozinke)C++14
5 / 100
1067 ms65536 KiB
#include <bits/stdc++.h> using namespace std; #define fi first #define se second #define pb push_back #define ins insert #define BIT(x,i) ((1LL<<i)&x) #define all(x) x.begin(),x.end() #define pll pair<ll,ll> #define pii pair<int,int> #define ll long long #define ull unsigned long long #define name "PASS" const int mod=int(1e9+7); int pi[8]={0,0,1,-1,1,1,-1,-1}; int pj[8]={-1,1,0,0,1,-1,1,-1}; template<class A,class B> inline void add(A &a,B b) { a+=b;while (a>=mod) a-=mod;} template<class A,class B> inline void sub(A &a,B b) { a-=b;while (a>=mod) a-=mod;while (a<0) a+=mod;} template<class A,class B> bool _max(A &a,B b) {if (a<b) return a=b,1; return 0;} template<class A,class B> bool _min(A &a,B b) {if (a>b) return a=b,1; return 0;} int n,res; const int nmax=20010; string a[nmax]; namespace Subtask1{ bool check(string &s,string &t){ int d=0; for(auto chr:t) d+=chr==s[d]; return d==s.size(); } void solve(){ for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) if (i!=j) res+=check(a[i],a[j]); cout<<res; } } namespace Subtask2{ void solve(){ unordered_map<string,int> dp; for(int i=1;i<=n;i++) dp[a[i]]++; for(int i=1;i<=n;i++){ dp[a[i]]--; unordered_map<string,bool> uwu; for(int mask=1;mask<(1<<a[i].size());mask++) { string tmp=""; for(int j=0;j<a[i].size();j++) if (BIT(mask,j)) tmp+=a[i][j]; res+=dp[tmp]*(uwu[tmp]==0); uwu[tmp]=1; } dp[a[i]]++; } cout<<res; } } int main() { ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0); if (fopen(name".INP","r")) { freopen(name".INP","r",stdin); freopen(name".OUT","w+",stdout); } cin>>n; for(int i=1;i<=n;i++) cin>>a[i]; if (n<=2000) return Subtask1::solve(),0; Subtask2::solve(); }

Compilation message (stderr)

lozinke.cpp: In function 'bool Subtask1::check(std::string&, std::string&)':
lozinke.cpp:28:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   28 |         return d==s.size();
      |                ~^~~~~~~~~~
lozinke.cpp: In function 'void Subtask2::solve()':
lozinke.cpp:47:34: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   47 |                     for(int j=0;j<a[i].size();j++)
      |                                 ~^~~~~~~~~~~~
lozinke.cpp: In function 'int main()':
lozinke.cpp:62:20: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   62 |             freopen(name".INP","r",stdin);
      |             ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
lozinke.cpp:63:20: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   63 |             freopen(name".OUT","w+",stdout);
      |             ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...