Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- #define re return
- #define pb push_back
- #define po pop_back
- #define all(x) (x).begin(), (x).end()
- #define fi first
- #define se second
- #define ss second.second
- #define sf second.first
- #define ff first.first
- #define fs first.second
- #define si size
- #define sqrt(x) sqrt(abs(x))
- #define mp make_pair
- #define pi 3.14159265359
- #define er erase
- #define in insert
- #define em empty
- #define ft front
- #define fo(i,n) for(i = 0; i < n; i++)
- #define ro(i,n) for(i = n - 1; i >= 0; i--)
- #define fr(i,j,n) for(i = j; i < n; i++)
- #define rf(i,j,n) for(i=n-1;i>=j;i--)
- typedef std::vector<int> vi;
- typedef std::vector<vi> vvi;
- typedef std::pair<int,int> ii;
- typedef std::vector<ii> vii;
- typedef std::vector<std::string> vs;
- typedef double dl;
- typedef long double ld;
- typedef long long ll;
- typedef std::pair<ll, ll> pll;
- typedef std::vector<ll> vll;
- #define filename ""
- using namespace std;
- char c[(int)1e5*3+10];
- set<string> s;
- int main()
- {
- int i;
- string t="";
- int o=0,j;
- set<string>::iterator q;
- while(gets(c))
- {
- for(i=0;c[i]!='\0';)
- {
- while(c[i]>='a'&&c[i]<='z')
- {
- t+=c[i];
- i++;
- }
- fo(j,t.length())
- {
- q=s.lower_bound(t.substr(0,j+1));
- if (q==s.end()) break;
- if (q->substr(0,j+1)!=t.substr(0,j+1)) break;
- if (q->length()<=t.length())
- {
- if (*q==t.substr(0,q->length()))
- {
- q++;
- if (q==s.end()||q->substr(0,j+1)!=t.substr(0,j+1))
- {
- cout<<t<<' '<<*q<<'\n';
- o-=t.length()-j;
- break;
- }
- }
- }
- }
- s.in(t);
- t="";
- while(c[i]!='\0'&&(c[i]<'a'||c[i]>'z'))
- {
- i++;
- }
- }
- o+=i+1;
- }
- cout<<o;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement