Submission #44306

# Submission time Handle Problem Language Result Execution time Memory
44306 2018-03-31T11:05:08 Z rajarshi_basu Three Friends (BOI14_friends) C++14
0 / 100
121 ms 9460 KB
#include <iostream>
#include <algorithm>
#include <functional>
#include <vector>
#include <string>

using namespace std;
 
#define FOR(i,n) for(int i=0;i<n;i++)
#define FORE(i,a,b) for(int i=a;i<=b;i++)
#define vi vector<int>
#define ii pair<int,int>
#define mp(a,b) make_pair(a,b)

#define null NULL;

int main(){
  int n;
  cin >> n;
  string s;
  cin >> s;
  int all[26];
  FOR(i,26)all[i] = 0;
  FOR(i,n)all[s[i]-'A']++;
  int pos = -1;
  FOR(i,26){
    if(all[i]%2 == 1){
      if(pos == -1)pos = i;
      else{
        cout<<"NOT POSSIBLE"<<endl;
        return 0;
      }
    }
  }

string res;
  int ctr = 0;
  bool ok = false;
  int pp = -1;
  char cc = 'A' + pos;
  bool cs1 = false;
  //case 3. mid charac
  bool cs3 = false;
  {
    string ss = "";
    FOR(i,n){
      if(i==n/2)continue;
      ss+=s[i];
    }
    //cout <<ss<<endl;
    string s1 = "";
    FOR(i,n/2)s1+=ss[i];
    s1+=s1;
   // cout<<s1<<endl;
    cs3 = (s1 == ss);
    if(cs3)res = s1;
   // cout<<"MC"<<cs3<<endl;
  }

  //cs4 somewhere else

  int cnt1 = 0;
  int cnt2 = 0;
  FOR(i,n/2){
    if(s[i] == cc)cnt1++;
    if(s[i+n/2+1] == cc)cnt2++;
  }

 // cout << cnt1 <<  " " <<cnt2<<endl;

    bool kk1  =false;bool kk2 = false;

  if(cnt1 > cnt2){
    string s1 = "";kk1= true;
    string s2 = "";
    FOR(i,n/2+1){
      s1+=s[i];
      if(i!=n/2)s2+=s[i+n/2+1];
    }
  
   // cout << s1<<"  "<<s2 <<endl;
    int ptr1=0;int ptr2 = 0;
    bool ok1 = 0;
    FOR(i,n/2){
      if(s1[i+ok1]!=s2[i]){
        if(ok1){
          kk1  = false;
        }
      }
    }
    if(kk1)res = s2;
  }else{
    string s1 = "";
    string s2 = "";
    kk2= true;
    FOR(i,n/2+1){
      if(i!=n/2)s1+=s[i];
      s2+=s[i+n/2];
    }
    bool ok1 = 0;
    FOR(i,n/2){
      if(s1[i]!=s2[i+ok1]){
        if(ok1){
          kk2  = false;
        }
      }
    }
    if(kk2)res  = s1;
   // cout << kk2 <<endl;

  }
  if((kk1 && kk2) || (kk1 && cs3) || (kk2 && cs3)){
    cout  << "NOT UNIQUE"<<endl;
  }else if(cs3 || kk1 || kk2){
    cout<<res<<endl;
  }else{
    cout << "NOT POSSIBLE"<<endl;
  }





}

Compilation message

friends.cpp: In function 'int main()':
friends.cpp:82:9: warning: unused variable 'ptr1' [-Wunused-variable]
     int ptr1=0;int ptr2 = 0;
         ^~~~
friends.cpp:82:20: warning: unused variable 'ptr2' [-Wunused-variable]
     int ptr1=0;int ptr2 = 0;
                    ^~~~
friends.cpp:37:7: warning: unused variable 'ctr' [-Wunused-variable]
   int ctr = 0;
       ^~~
friends.cpp:38:8: warning: unused variable 'ok' [-Wunused-variable]
   bool ok = false;
        ^~
friends.cpp:39:7: warning: unused variable 'pp' [-Wunused-variable]
   int pp = -1;
       ^~
friends.cpp:41:8: warning: unused variable 'cs1' [-Wunused-variable]
   bool cs1 = false;
        ^~~
# Verdict Execution time Memory Grader output
1 Correct 3 ms 248 KB Output is correct
2 Correct 2 ms 356 KB Output is correct
3 Correct 2 ms 432 KB Output is correct
4 Incorrect 2 ms 476 KB Output isn't correct
5 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 121 ms 9168 KB Output is correct
2 Correct 109 ms 9236 KB Output is correct
3 Correct 106 ms 9236 KB Output is correct
4 Correct 113 ms 9460 KB Output is correct
5 Correct 109 ms 9460 KB Output is correct
6 Incorrect 109 ms 9460 KB Output isn't correct
7 Halted 0 ms 0 KB -