这两份代码一个 70 一个 100 ,区别只在 for
循环的 j
里面,难道就是在循环并且进入之前先判断吗?
//满分代码
#include<iostream>
using namespace std;
const int MAXN=1000001;
//const int MAXN=100001;
int main(){
int n,flag[MAXN]={0},trans[MAXN],price[MAXN],time[MAXN];
cin>>n;
int sum=0;
for(int i=1;i<=n;i++)
cin>>trans[i]>>price[i]>>time[i];
for(int i=1;i<=n;i++){
if(flag[i]==1) continue;
sum+=price[i];
if(trans[i]==0){
for(int j=i+1;j<=n&&time[j]-time[i]<=45;j++){
if(flag[j]==0&&trans[j]==1&&price[j]<=price[i]){
flag[j]=1;
break;
}
}
}
}
cout<<sum;
return 0;
}
//70代码
#include<iostream>
using namespace std;
const int MAXN=1000001;
int main(){
int n,flag[MAXN]={0},trans[MAXN],price[MAXN],time[MAXN];
cin>>n;
int sum=0;
for(int i=1;i<=n;i++)
cin>>trans[i]>>price[i]>>time[i];
for(int i=1;i<=n;i++){
if(flag[i]==1) continue;
sum+=price[i];
if(trans[i]==0&&flag[i]==0){
for(int j=i+1;j<=n;j++){
if(flag[j]==0&&trans[j]==1&&price[j]<=price[i]&&time[j]-time[i]<=45){
// sum+=price[i];
// flag[i]=1;
flag[j]=1;
break;
}
}
}
}
// for(int i=1;i<=n;i++){
// if(flag[i]==0){
// sum+=price[i];
// //cout<<trans[i]<<price[i]<<time[i]<<endl;
// flag[i]=1;
// }
// }
cout<<sum;
return 0;
}