## Codeforces Round #401 (Div. 2)

Codeforces Round #401 (Div. 2)

ps：写题解时没看题，题意可能有错

0 1 2

1 0 2

1 2 0

2 1 0

2 0 1

0 2 1

0 1 2

```#include<bits/stdc++.h>
using namespace std;

int n,x;
int main(){
cin>>n>>x;
n=n%6;
if(n==1&&x!=2) x=x^1;
else if(n==2){
if(x==2) x=0;
else if(x==1) x=2;
else x=1;
}
else if(n==3){
x=2-x;
}
else if(n==4){
if(x==0) x=2;
else if(x==1) x=0;
else if(x==2) x=1;
}
else if(n==5){
if(x!=0){
x=(x)%2+1;
}
}
cout<<x<<"\n";
return 0;
}```
View Code

```#include<bits/stdc++.h>
using namespace std;

int n;
char str1[2000],str2[2000];
int main(){
scanf("%d",&n);
scanf("%s%s",str1,str2);
sort(str1,str1+n);
sort(str2,str2+n);
int ans=0;
int j=n-1;
for(int i=n-1;i>=0;i--){
if(str1[i]>str2[j]){
ans++;
j++;
}
j--;
}
int res=0;
j=0;
for(int i=0;i<n;i++){
if(str2[i]>str1[j]){
res++;
}else{
j--;
}
j++;
}
printf("%d\n%d\n",ans,res);
return 0;
}```
View Code

```#include<bits/stdc++.h>
using namespace std;

int n,m,c;
int k;

int main(){
std::ios::sync_with_stdio(false);
cin>>n>>m;
int a[n+10][m+10];
int p[n+10][m+10];
int pre[n+10];
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
cin>>a[i][j];
p[i][j]=0;
}
}
for(int i=0;i<n;i++){
pre[i]=i;
}
for(int i=0;i<m;i++){
int st=0;
pre[0]=0;
for(int j=1;j<n;j++){
if(a[j][i]>=a[j-1][i]){
pre[j]=min(st,pre[j]);
}else{
st=j;
}
}
}
cin>>k;
while(k--){
int l,r;
cin>>l>>r;
if(pre[r-1]<=l-1) cout<<"Yes\n";
else cout<<"No\n";
}
return 0;
}```
View Code

```#include<bits/stdc++.h>
using namespace std;
const int N=5e5+100;

int n;
char c;
string str[N];

int solve(int x,int i){
string s(str[i-1],0,x);

if(s>str[i]) return 1;
else return 0;
}
int main(){
cin>>n;
for(int i=0;i<n;i++){
cin>>c;
cin>>str[i];
}
/*for(int i=0;i<n;i++){
cout<<str[i]<<endl;
}*/
for(int i=n-1;i>=1;i--){
int l=0,r=max(str[i].length(),str[i-1].length());
int mid;
while(l<=r){
mid=(l+r)/2;
if(solve(mid,i)) r=mid-1;
else l=mid+1;
}
//cout<<r<<"..\n";
str[i-1]=string (str[i-1],0,r);
//cout<<str[i-1]<<"..\n";
}
for(int i=0;i<n;i++){
cout<<"#"<<str[i]<<endl;
}
return 0;
}```
View Code

```#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1e5+100;

int n;
struct ring{
int a,b,h;
bool operator <(const ring &r) const{
if(b!=r.b)return b>r.b;
else  return a>r.a;
}
}ri[N];

stack<ring> s;
int main(){
cin>>n;
for(int i=0;i<n;i++){
cin>>ri[i].a>>ri[i].b>>ri[i].h;
}
sort(ri,ri+n);
ll res=(ll)ri[0].h,ans=res;
s.push(ri[0]);
for(int i=1;i<n;i++){
while(!s.empty()&&ri[i].b<=s.top().a){
res-=s.top().h;
s.pop();
}
res+=(ll) ri[i].h;
ans=max(ans,res);
s.push(ri[i]);
}
cout<<ans<<"\n";
return 0;
}```
View Code