POJ 1089
いもす法をする
[a,a]みたいな区間を忘れないようにする
#include <cstdio> #include <algorithm> using namespace std; int s[1000002]; int single[1000002]; int main(){ int N; int mi = 1000002, ma = 0; scanf("%d", &N); for(int i = 0; i < N; i++){ int a, b; scanf("%d %d", &a, &b); mi = min(a, mi); ma = max(b, ma); s[a]++; s[b]--; if(a == b) single[a] = 1; } int p = -1; for(int i = mi - 1; i < ma + 2; i++){ s[i] = s[i-1] + s[i]; if(s[i] >= 1 && p == -1) p = i; if(s[i] == 0 && p != -1){ printf("%d %d\n", p , i); p = -1; }else if(s[i] == 0 && single[i] == 1){ printf("%d %d\n", i, i); } } }