codeforces D.Teams Formation

来源:互联网 发布:美国非农数据公布网站 编辑:程序博客网 时间:2024/05/01 11:59

转载:http://www.cnblogs.com/TnT2333333/p/7742730.html

#include<iostream>#include<cstdlib>#include<cstring>#include<cstdlib>#include<algorithm>#define INF 99999999#define maxn 100005#define LL long longusing namespace std;struct node{int val;int cnt;}lina[maxn];int main(){LL n,k,m;while(cin>>n>>k>>m){int top=0;LL ans=0;memset(lina,0,sizeof(lina));for(int i=0;i<n;i++){int t;cin>>t;if(top==0||lina[top].val!=t){top++;lina[top].val=t;lina[top].cnt=1;}else{lina[top].cnt++;}if(lina[top].cnt==k){lina[top].cnt-=k;top--;}}LL sum=0;for(int i=1;i<=top;i++){sum+=lina[i].cnt;}//cout << sum << endl;int sta,eda;sta=1;eda=top;//cout << top << endl;while(sta<eda&&lina[sta].val==lina[eda].val){if((lina[sta].cnt+lina[eda].cnt)%k==0){//cout << line[sta].cnt << ' ' << line[eda].cnt << endl;sta++;eda--;//cout << sta << ' ' << eda << endl;}else{lina[sta].cnt=(lina[sta].cnt+lina[eda].cnt)%k;lina[eda].cnt=0;break;}}if(sta==eda){if(lina[sta].cnt*m%k==0)ans=0;else{ans=sum+lina[sta].cnt*(m-1);ans-=lina[sta].cnt*m-lina[sta].cnt*m%k;}}else if(sta<eda){for(int i=sta;i<=eda;i++)ans+=lina[i].cnt;ans*=(m-1);ans+=sum;}cout << ans << endl;}return 0;} 


原创粉丝点击