답안 #50300

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
50300 2018-06-09T18:12:55 Z computerbox Lozinke (COCI17_lozinke) C++14
95 / 100
685 ms 159964 KB
 //ID:computerbox --> Hajiyev Huseyn
#include <bits/stdc++.h>
//#pragma comment(linker, "/stack:200000000")
//#pragma GCC optimize("Ofast")
//#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
//#define _CRT_SECURE_NO_WARNINGS
//#include <boost/multiprecision/cpp_int.hpp>
//using boost::multiprecision::cpp_int;
#define FAST_READ ios_base::sync_with_stdio(0);/*cin.tie(0); cout.tie(0);*/
#define in freopen("input.txt", "r", stdin);
#define out freopen("output.txt", "w", stdout);
#define ll long long
#define debt(x,y)cout<<"#x = "<<(x)<<" and "<<"#y = "<<(y)<<endl;
#define deb(x)cout<<"#x = "<<(x)<<endl;
#define COUT(n, a) cout<< fixed << setprecision(a) << n<<endl
#define pb push_back
#define all(x) (x).begin(), (x).end()
#define endl "\n"
#define arr(a,n) for(ll i=1;i<=n;i++) cout<<a[i]<<" "; cout << "\n";
#define vecc(a,n) for(ll i=0;i<n;i++) cout<<a[i]<<" "; cout << "\n";
#define CURTIME() cerr << clock() * 1.0 / CLOCKS_PER_SEC << endl
#define DTIME(ccc) __begin = clock(); ccc; cerr<<"Time of work = "<<(clock()-__begin)/CLOCKS_PER_SEC<<endl;
#define MAXN 200010

using namespace std;

set<ll>leaf[200010];
ll trie[27][MAXN];
ll sz;
void add_string(string stroka,ll index)
{
   ll v=0;
   for(ll i=0;i<stroka.size();i++)
   {
     if(trie[stroka[i]-'a'][v]==0)
     {
       trie[stroka[i]-'a'][v]=sz++;
     }
     v=trie[stroka[i]-'a'][v];
     leaf[v].insert(index);
   }
}

ll find(string stroka)
{
  ll v=0;
  ll ans=0;
  for(ll i=0;i<stroka.size();i++)
  {
    v=trie[stroka[i]-'a'][v];
  }
  ans=leaf[v].size();
  return ans-1;
}

ll n;
vector<string>nuj;
string stroka;
string abc;
int main(){
FAST_READ;
cin.tie(0);
cin>>n;

sz=1;
for(ll i=1;i<=n;i++)
{
  cin>>stroka;
  string neww="";
  for(ll j=0;j<(ll)stroka.size();j++)
  {
    neww="";
     for(ll jj=j;jj<(ll)stroka.size();jj++)
     {
      neww+=stroka[jj];
      //debt(neww,j);
      add_string(neww,i);
     }
  }

  nuj.pb(stroka);
}

ll cnt=0;
for(ll i=0;i<nuj.size();i++)
{
  ll ans=find(nuj[i]);
  //deb(ans);
  cnt=cnt+ans;
}
cout<<cnt<<endl;



return 0;
} 

Compilation message

lozinke.cpp: In function 'void add_string(std::__cxx11::string, long long int)':
lozinke.cpp:33:16: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
    for(ll i=0;i<stroka.size();i++)
               ~^~~~~~~~~~~~~~
lozinke.cpp: In function 'long long int find(std::__cxx11::string)':
lozinke.cpp:48:15: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for(ll i=0;i<stroka.size();i++)
              ~^~~~~~~~~~~~~~
lozinke.cpp: In function 'int main()':
lozinke.cpp:85:13: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
 for(ll i=0;i<nuj.size();i++)
            ~^~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 11 ms 9720 KB Output is correct
2 Correct 9 ms 9832 KB Output is correct
3 Correct 9 ms 9900 KB Output is correct
4 Correct 10 ms 10104 KB Output is correct
5 Correct 17 ms 11012 KB Output is correct
6 Correct 22 ms 11684 KB Output is correct
7 Correct 25 ms 12708 KB Output is correct
8 Correct 32 ms 18084 KB Output is correct
9 Correct 129 ms 19868 KB Output is correct
10 Correct 199 ms 35632 KB Output is correct
11 Correct 191 ms 35632 KB Output is correct
12 Runtime error 419 ms 157728 KB Execution killed with signal 11 (could be triggered by violating memory limits)
13 Correct 526 ms 157728 KB Output is correct
14 Correct 272 ms 157728 KB Output is correct
15 Correct 444 ms 159964 KB Output is correct
16 Correct 685 ms 159964 KB Output is correct
17 Correct 562 ms 159964 KB Output is correct
18 Correct 214 ms 159964 KB Output is correct
19 Correct 341 ms 159964 KB Output is correct
20 Correct 361 ms 159964 KB Output is correct