제출 #711191

#제출 시각아이디문제언어결과실행 시간메모리
711191rrrr10000Boarding Passes (BOI22_passes)C++14
5 / 100
3 ms596 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; typedef vector<ll> vi; typedef vector<vi> vvi; typedef pair<ll,ll> P; typedef tuple<ll,ll,ll> PP; typedef vector<P> vp; typedef vector<vp> vvp; #define rep(i,n) for(ll i=0;i<(ll)(n);i++) #define REP(i,k,n) for(ll i=(ll)(k);i<(ll)(n);i++) #define all(a) a.begin(),a.end() #define fi first #define se second #define pb emplace_back template<class T> void out(T a){cout<<a<<endl;} template<class T> void outv(T v){rep(i,v.size()){if(i)cout<<' ';cout<<v[i];}cout<<endl;} template<class T> void outvv(T v){for(auto x:v)outv(x);} template<class T> void outvp(T v){rep(i,v.size()){cout<<'('<<v[i].fi<<','<<v[i].se<<')';}cout<<endl;} template<class T> void outvvp(T v){for(auto x:v)outvp(x);} template<class T> bool chmin(T&a,T b){if(a>b){a=b;return true;}return false;} int main(){ string str;cin>>str; ll n=15,m=str.size(); { ll ok=-1,ng=m; while(ng-ok>1){ ll md=(ok+ng)/2; if(md<m-1-md)ok=md; else ng=md; } ll ans=(ok+1)*ok/2+(m-ok-1)*(m-ok-2)/2; if(ans%2==0)out(ans/2); else{ cout<<ans/2; cout<<".5"<<endl; } } // vvi g(n); // rep(i,m)g[str[i]-'A'].pb(i); // vvp cost(n,vp(m)); // rep(i,n){ // ll cnt=0; // rep(j,m){ // if(str[j]-'A'==i)cnt++; // cost[i][j]=P(cnt*2,(g[i].size()-cnt)*2); // } // } // vvp rui=cost; // rep(i,n)rep(j,n)rep(k,g[j].size()-1)rui[i][g[j][k+1]].fi+=rui[i][g[j][k]].fi; // rep(i,n)rep(j,n)for(ll k=g[j].size()-1;k>0;k--)rui[i][g[j][k-1]].se+=rui[i][g[j][k]].se; // vi dp(1<<n,1001001001001001001); // dp[0]=0; // rep(bit,1<<n){ // rep(i,n)if(!(bit>>i&1)){ // ll ok=-1,ng=g[i].size(); // while(ng-ok>1){ // ll md=(ok+ng)/2; // ll cost0=md,cost1=g[i].size()-1-md; // rep(j,n)if(bit>>j&1){ // cost0+=cost[j][g[i][md]].fi; // cost1+=cost[j][g[i][md]].se; // } // if(cost0<cost1)ok=md; // else ng=md; // } // ll ncost=dp[bit]+(ok+1)*ok/2+(g[i].size()-ok-1)*(g[i].size()-ok-2)/2; // if(ok!=-1){ // rep(j,n)if(bit>>j&1)ncost+=rui[j][g[i][ok]].fi; // } // if(ng!=g[i].size()){ // rep(j,n)if(bit>>j&1)ncost+=rui[j][g[i][ng]].se; // } // chmin(dp[bit|(1<<i)],ncost); // } // } // out((long double)(dp.back())/2); }

컴파일 시 표준 에러 (stderr) 메시지

passes.cpp: In function 'int main()':
passes.cpp:25:8: warning: unused variable 'n' [-Wunused-variable]
   25 |     ll n=15,m=str.size();
      |        ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...