Submission #931863

#TimeUsernameProblemLanguageResultExecution timeMemory
931863Tyx2019Three Friends (BOI14_friends)C++17
100 / 100
44 ms6388 KiB
#include <bits/stdc++.h> #define int long long #define debug(x) if(0) cout << #x << " is " << x << "\n"; #pragma GCC optimize("O3,unroll-loops") #pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt") using namespace std; main(){ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int N; cin >> N; string S; cin >> S; if(N % 2 == 0){ cout << "NOT POSSIBLE"; return 0; } int X = (N - 1) / 2; char curstr[N - 1]; char rightneow[X]; bool hvone = false; int numcorrect = 0; for(int i=1;i<N;i++){ curstr[i - 1] = S[i]; } for(int i=0;i<X;i++){ if(curstr[i] == curstr[i + X]) numcorrect ++; } int numcorwithfunny = 0; if(numcorrect == X && !hvone){ for(int j=0;j<X;j++) rightneow[j] = curstr[j]; for(int j=0;j<X;j++) if(rightneow[j] == curstr[j]) numcorwithfunny ++; hvone = true; } for(int i=0;i<N - 1;i++){ //change curstr[i] to S[i] if(i < X){ if(curstr[i] == curstr[i + X]){ if(S[i] != curstr[i + X]) numcorrect --; } else if(S[i] == curstr[i + X]) numcorrect ++; } else{ if(curstr[i] == curstr[i - X]){ if(S[i] != curstr[i - X]) numcorrect --; } else if(S[i] == curstr[i - X]) numcorrect ++; } if(hvone && i < X){ if(curstr[i] == rightneow[i]){ if(S[i] != rightneow[i]) numcorwithfunny --; } else if(S[i] == rightneow[i]) numcorwithfunny ++; } curstr[i] = S[i]; if(numcorrect == X && hvone){ debug(i); debug(curstr[2]); if(numcorwithfunny != X){ cout << "NOT UNIQUE"; return 0; } } if(numcorrect == X && !hvone){ for(int j=0;j<X;j++) rightneow[j] = curstr[j]; for(int j=0;j<X;j++) if(rightneow[j] == curstr[j]) numcorwithfunny ++; hvone = true; } } if(hvone) for(int i=0;i<X;i++) cout << rightneow[i]; else cout << "NOT POSSIBLE"; }

Compilation message (stderr)

friends.cpp:7:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
    7 | main(){
      | ^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...