1 solutions
-
0
C :
#include "stdio.h" int arr[1000000]; void main() { int n; int tag1,tag2,max1,max2; int i,j,k,x,y,max,min; while (scanf("%d",&n)!=EOF) { max=0,min=9999999; max1=0;max2=0; tag1=0;tag2=0; for (i=1;i<=1000000;i++) arr[i]=0; for (i=1;i<=n;i++) { scanf("%d %d",&x,&y); if (x<min) min=x; if (y>max) max=y; for (j=x;j<y;j++) arr[j]=1; } for (i=min;i<=max;i++) { if (arr[i]==1) tag1++; else tag2++; if ((arr[i]==1)&&(arr[i-1]==0)) { if (tag2>max2) max2=tag2; tag2=0; tag1=1; } if ((arr[i]==0)&&(arr[i-1]==1)) { if (tag1>max1) max1=tag1; tag2=1; tag1=0; } } printf("%d %d\n",max1,max2); } }C++ :
#include <bits/stdc++.h> using namespace std; #define maxn 1000005 #define rep(i,x,y) for (int i=x;i<=y;i++) int a[maxn]; int main() { int n; while(scanf("%d",&n)!=EOF){ memset(a,0,sizeof(a)); int min1=maxn+10,max2=0; for (int i=0;i<n;i++){ int as,ad; scanf("%d%d",&as,&ad); min1=min(min1,as+1); max2=max(max2,ad); rep(s,as+1,ad) a[s]++; } int ans0=0,ans1=0; int an=0,as=0; rep(i,min1,max2){ if (a[i]==0){ an++; ans1=max(ans1,as); as=0; } else { as++; ans0=max(ans0,an); an=0; } } ans0=max(ans0,an); ans1=max(ans1,as); //if (ans0) ans0++; printf("%d %d\n",ans1,ans0); } return 0; }
- 1
Information
- ID
- 16546
- Time
- 1000ms
- Memory
- 128MiB
- Difficulty
- (None)
- Tags
- # Submissions
- 0
- Accepted
- 0
- Uploaded By