답안 #398198

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
398198 2021-05-03T23:06:42 Z fun_day Palindromic Partitions (CEOI17_palindromic) C++14
60 / 100
10000 ms 5920 KB
#include <bits/stdc++.h>

using namespace std;

#define debug(x) cerr << " - " << #x << ": " << x << '\n';
#define debugs(x, y) cerr << " - " << #x << ": " << x << " " << #y << ": " << y << '\n';
#define debugv(v) cerr << #v << " : " << "[ "; for(auto it : v) cerr << it << " ,"; cerr << ']' << "\n";

int main(){
  ios::sync_with_stdio(false);
  cin.tie(nullptr);
  int tt;
  cin >> tt;
  while(tt--){
    string ss ; 
    cin >> ss ; 
    int n = ss.length();
    map<char, vector<int>>mp;
    for(int i = 0 ; i < n; i++){
      mp[ss[i]].push_back(i);        
    }
    int ans = 1;
    for(int i = n-1,qs = 0 ; qs< n/2 ; i--,qs++){
      char q = ss[i];
      string acc;
      string against;
      bool is = 1;
      int idx = qs;
      for(int j = 0 ; j < (int)mp[q].size() ; j++){
        if(mp[q][j]<idx){
          mp[q].erase(mp[q].begin());
          j--;
          continue;  
        }
        if(mp[q][j]>=n/2)break;
        acc += ss.substr(idx , mp[q][j]-idx+1);
        int rs = acc.length();
        against  = ss.substr(i-rs+1 , rs);
        idx = mp[q][j]+1;
        if(against == acc){
          acc.clear();
          ans+=2;
          against.clear();
          i =i-rs+1;
          qs = mp[q][j];
          if(qs+1==i)ans--;
          mp[q].erase(mp[q].begin());
          is = 0;
          break;  
        }
        mp[q].erase(mp[q].begin());
        j--;
      }
      if(is)break;        
    }
    cout << ans << '\n';
    cout.flush();
  }
  return 0;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 204 KB Output is correct
2 Correct 1 ms 204 KB Output is correct
3 Correct 1 ms 204 KB Output is correct
4 Correct 1 ms 204 KB Output is correct
5 Correct 1 ms 204 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 204 KB Output is correct
2 Correct 1 ms 204 KB Output is correct
3 Correct 1 ms 204 KB Output is correct
4 Correct 1 ms 204 KB Output is correct
5 Correct 1 ms 204 KB Output is correct
6 Correct 1 ms 332 KB Output is correct
7 Correct 1 ms 204 KB Output is correct
8 Correct 1 ms 204 KB Output is correct
9 Correct 1 ms 204 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 204 KB Output is correct
2 Correct 1 ms 204 KB Output is correct
3 Correct 1 ms 204 KB Output is correct
4 Correct 1 ms 204 KB Output is correct
5 Correct 1 ms 204 KB Output is correct
6 Correct 1 ms 332 KB Output is correct
7 Correct 1 ms 204 KB Output is correct
8 Correct 1 ms 204 KB Output is correct
9 Correct 1 ms 204 KB Output is correct
10 Correct 28 ms 524 KB Output is correct
11 Correct 17 ms 460 KB Output is correct
12 Correct 35 ms 460 KB Output is correct
13 Correct 22 ms 332 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 204 KB Output is correct
2 Correct 1 ms 204 KB Output is correct
3 Correct 1 ms 204 KB Output is correct
4 Correct 1 ms 204 KB Output is correct
5 Correct 1 ms 204 KB Output is correct
6 Correct 1 ms 332 KB Output is correct
7 Correct 1 ms 204 KB Output is correct
8 Correct 1 ms 204 KB Output is correct
9 Correct 1 ms 204 KB Output is correct
10 Correct 28 ms 524 KB Output is correct
11 Correct 17 ms 460 KB Output is correct
12 Correct 35 ms 460 KB Output is correct
13 Correct 22 ms 332 KB Output is correct
14 Execution timed out 10045 ms 5920 KB Time limit exceeded
15 Halted 0 ms 0 KB -