답안 #632920

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
632920 2022-08-21T08:35:26 Z Ferid20072020 Election (BOI18_election) C++17
0 / 100
39 ms 212 KB
#pragma GCC optimize("O3,unroll-loops")
#pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt")


#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>


using namespace __gnu_pbds;
using namespace std;
using namespace chrono;
//using namespace atcoder



#define YES             cout << "YES"
#define NO              cout << "NO"
#define vi              vector<int>
#define vl              vector<long long>
#define vs              vector<string>
#define vc              vector<char>
#define vd              vector<double>
#define vld             vector<long double>
#define ll              long long
#define ull             unsigned long long
#define ui              unsigned int
#define ld              long double
#define f               first
#define s               second
#define pii             pair<int , int>
#define pll             pair<ll , ll>
#define pil             pair<int , ll>
#define pli             pair<ll , int>
#define psi             pair<string , int>
#define pci             pair<char , int>
#define pic             pair<int , char>
#define pis             pair<int , string>
#define psl             pair<string , ll>
#define pcl             pair<char , ll>
#define plc             pair<ll , char>
#define pls             pair<ll , string>
#define pb              push_back
#define eb              emplace_back
#define mp              make_pair
#define ins             insert
#define END             return 0
#define mod             1e9
#define speed           ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0)
#define all(x)          (x).begin() , (x).end()
#define oo              1e9
#define size(x)         x.size()

/*
int gcd(int number1 , int number2){
   if(number2 == 0){
      return number1;
   }
   return gcd(number2 , number1 % number2);
}

int lcm(int number1 , int number2){
   return number1 / gcd(number1 , number2) * number2;
}

ll fact(int number){
   ll product = 1;
   for(int i=2 ; i<=number ; i++){
      product *= i;
   }
   return product;
}
*/


//#define int ll

void binary(int l , int r , string s , int num){
   int L = 0 , R = num , best = num;
   while(L <= R){
      int mid = L + (R - L) / 2;
      int numc = 0 , numt = 0 , flg1 = 1 , flg2 = 1;
      for(int i=l ; i<=r ; i++){
         if(s[i] == 'C'){
            numc++;
         }
         else{
            numt++;
         }
         if((numt - mid) > numc){
            flg1 = 0;
            break;
         }
      }
      numc = 0 ; numt = 0;
      for(int i=r ; i>=l ; i--){
         if(s[i] == 'C'){
            numc++;
         }
         else{
            numt++;
         }
         if((numt - mid) > numc){
            flg2 = 0;
            break;
         }
      }
      if(flg1 == 1 && flg2 == 1){
         best = mid;
         R = mid - 1;
      }
      else{
         L = mid + 1;
      }
   }

   cout << best << '\n';
}

void solve(){
   int n;
   cin >> n;
   string s;
   cin >> s;
   int T;
   cin >> T;
   while(T--){
      int l , r , num = 0;
      cin >> l >> r; l--; r--;
      for(int i=l ; i<=r ; i++){
         if(s[i] == 'T'){
            num++;
         }
      }
      binary(l , r , s , num);
   }
}


/*signed */ int main(){
   speed;

   int t = 1;
   //cin >> t;

   while(t--){
      solve();
   }

   END;
}
# 결과 실행 시간 메모리 Grader output
1 Incorrect 39 ms 212 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 39 ms 212 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 39 ms 212 KB Output isn't correct
2 Halted 0 ms 0 KB -