100分:
#include<iostream>
using namespace std;
int m,n;
int a[1000100],b[1000100],flag[1000100];
int test_flag(int x,int y){//判断x,y的大小,若相等返回原数
if(x>=y) return 1;
else return 2;
}
int main(){
cin>>n>>m;
int x,y,time=0,ans=0;
for(int i=1;i<=n;i++){//输入sh
cin>>x>>y;
for(int j=1;j<=y;j++){
a[j+time]=a[j+time-1]+x;
}
time+=y;
}
time=0;
for(int i=1;i<=m;i++){//输入kc
cin>>x>>y;
for(int j=1;j<=y;j++){
b[j+time]=b[j+time-1]+x;
}
time+=y;
}
for(int i=1;i<=time;i++){//判断有多少次变动
flag[i]=test_flag(a[i],b[i]);
if(flag[i-1]!=flag[i])
ans++;
}
cout<<ans-1;
return 0;
}
60分
#include<iostream>
using namespace std;
int m,n;
int a[1000100],b[1000100],flag[1000100];
int test_flag(int x,int y){//判断x,y的大小,若相等返回原数
if(x>=y) return 2;
else return 0;
}
int main(){
cin>>n>>m;
int x,y,time=0,ans=0;
for(int i=1;i<=n;i++){//输入sh
cin>>x>>y;
for(int j=1;j<=y;j++){
a[j+time]=a[j+time-1]+x;
}
time+=y;
}
time=0;
for(int i=1;i<=m;i++){//输入kc
cin>>x>>y;
for(int j=1;j<=y;j++){
b[j+time]=b[j+time-1]+x;
}
time+=y;
}
for(int i=1;i<=time;i++){//判断有多少次变动
flag[i]=test_flag(a[i],b[i]);
if(flag[i-1]!=flag[i])
ans++;
}
cout<<ans-1;
return 0;
}