content
3346. Do you know your ABC [sort]
#include<bits/stdc++.h>
using namespace std;
typedef long long int LL;
LL a[15];
int main(void)
{
for(int i=0;i<7;i++) cin>>a[i];
sort(a,a+7);
LL b=a[6]-a[4];
LL a1=a[6]-a[5];
LL c=a[6]-a1-b;
cout<<a1<<" "<<b<<" "<<c<<endl;
return 0;
}
3358. Stocking but not completely stocking 【greed】
It depends on whether the next letter is in front or behind it, and then it can be the same song, otherwise start a new one.
#include<bits/stdc++.h>
using namespace std;
string a,b;
int cnt[35];
int main(void)
{
cin>>a>>b;
for(int i=0;i<a.size();i++) cnt[a[i]-'a']=i;
int last=-1,ans=1;
for(int i=0;i<b.size();i++)
{
if(cnt[b[i]-'a']>last) last=cnt[b[i]-'a'];
else ans++,last=cnt[b[i]-'a'];
}
cout<<ans;
}
3370. Year of the Ox 【Analog】
Explain that their relative positions are uniquely determined.
#include<bits/stdc++.h>
using namespace std;
map<string,int>mp;
map<string,int>d;
string s[12]={
"Ox","Tiger","Rabbit","Dragon","Snake","Horse","Goat","Monkey","Rooster","Dog","Pig","Rat"};
int main(void)
{
int t; cin>>t;
mp["Bessie"]=0,d["Bessie"]=0;
string a; getline(cin,a);
for(int i=0;i<t;i++)
{
getline(cin,a);
string name1=a.substr(0,a.find(' '));
string name2=a.substr(a.rfind(' ')+1);
int k=0;
for(int i=0;i<12;i++)//找到属相
{
if(a.find(s[i])!=-1)
{
k=i; break;
}
}
mp[name1]=k;
if(a.find("previous")!=-1)
{
if(mp[name1]>=mp[name2]) d[name1]=d[name2]-(12-mp[name1]+mp[name2]);//上一周期
else d[name1]=d[name2]-(mp[name2]-mp[name1]);//同一周期
}else
{
if(mp[name1]<=mp[name2]) d[name1]=d[name2]+(12-mp[name2]+mp[name1]);//下一周期
else d[name1]=d[name2]+(mp[name1]-mp[name2]);//同一周期
}
}
cout<<abs(d["Elsie"]);
return 0;
}
3745. Niu's Academic Circle I [two points]
Note: add up to 1 per paper.
#include<bits/stdc++.h>
using namespace std;
typedef long long int LL;
const int N=1e5+10;
LL n,m,a[N];
bool check(int mid)
{
int cnt=0,sum=0;
for(int i=n-1;i>=0;i--)
{
if(a[i]>=mid) cnt++;
else
{
if(a[i]+1>=mid&&sum<m) sum++,cnt++;
else break;
}
}
return cnt>=mid;
}
int main(void)
{
cin>>n>>m;
for(int i=0;i<n;i++) cin>>a[i];
sort(a,a+n);
int l=0,r=n;
while(l<r)
{
int mid=l+r+1>>1;
if(check(mid)) l=mid;
else r=mid-1;
}
cout<<l;
return 0;
}
1459. Cow Gymnastics【Violence】
#include<bits/stdc++.h>
using namespace std;
const int N=25;
int a[N][N],n,m;
int main(void)
{
cin>>m>>n;
for(int i=0;i<m;i++)
for(int j=0;j<n;j++) cin>>a[i][j];
int ans=0;
for(int i=1;i<=n;i++)
{
int cnt[N]={
0};
for(int j=0;j<m;j++)
{
int index=0;
for(int k=0;k<n;k++)
if(a[j][k]==i) {
index=k;break;}//找到位置
for(int k=index+1;k<n;k++) cnt[a[j][k]]++;//在他后面的
}
for(int j=1;j<=n;j++)
if(cnt[j]==m) ans++;
}
cout<<ans;
return 0;
}
1442. Word Processor 【Simulation】
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
string a[N];
int n,m;
int main(void)
{
cin>>n>>m;
for(int i=0;i<n;i++) cin>>a[i];
int sum=0;
for(int i=0;i<n;i++)
{
if(sum+a[i].size()<=m) cout<<a[i]<<" ",sum+=a[i].size();
else puts(""),sum=a[i].size(),cout<<a[i]<<" ";
}
return 0;
}