CF44C Holidays
题意翻译
n天假期,安排m个人来浇花,第i个人负责[a[i],b[i]]天,问花是否可以每天都被浇水且不重复。
可以的话输出“OK”,不可以的话输出最早出问题的那天的天号以及那天花被浇了多少次水。
1≤n,m≤100 1≤a[i]≤b[i]≤n b[i]≤a[i+1]
输入输出样例
输入
10 5
1 2
3 3
4 6
7 7
8 10
输出
OK
输入
10 5
1 2
2 3
4 5
7 8
9 10
输出
2 2
输入
10 5
1 2
3 3
5 7
7 7
7 10
输出
4 0
思路
用到了一维差分,分两步:(原始差分数组p初始化)
①p[l] = p[l]+k,p[r+1]=p[r+1]-k;
②最后求一次前缀和
题解
#include<stdio.h>
using namespace std;
int p[105];//差分数组
int main(){
int n,m,i;
scanf("%d%d",&n,&m);
for(i=1;i<=m;i++){
int l,r;
scanf("%d%d",&l,&r);
p[l]+=1;p[r+1]-=1;//p[i] = p[i]+k,p[r+1] = p[r+1]-k
}
for(i=1;i<=n;i++){
p[i]+=p[i-1];//最后再做前缀和
if(p[i]!=1){
printf("%d %d",i,p[i]);
return 0;
}
}
printf("OK");
return 0;
}