Gym

来源:互联网 发布:php 不识别utf8 编辑:程序博客网 时间:2024/06/13 00:27

每一个x 的位置不会相同

a 数组 保存下每个机械臂的行号,up 和 dn 数组保存每个传送带的可以获得物资的上界和下界

#include <iostream>#include <cstdio>#include <cstring>#include <cstdlib>#include <cmath>#include <set>#include <queue>#include <algorithm>#include <vector>#include <cctype>#include <stack>#include <sstream>#include <list>#include <map>#include <assert.h>#define debug() puts("************")#define MS(a,b) memset(a,b,sizeof a)using namespace std;typedef long long LL;typedef unsigned long long ULL;typedef pair<int,int> P;const int INF = 0x3f3f3f3f;const double inf = 1e20;const double PI = 3.1415926535;const double eps = 1e-15;const LL mod = 1e9+7;const int dx[] = {-1,0,1,0};const int dy[] = {0,1,0,-1};const int maxn = 200000 + 7, maxd = 100000 + 7;;int n, m;int a[maxd];int dn[maxn];int up[maxn];void init() {    int x, y;    memset(a, 0, sizeof a);    for(int i = 0; i < m; ++i) {        scanf("%d %d", &x, &y);        a[x] = y;    }    for(int i = 1; i <= n; ++i) {        up[i] = dn[i] = i;    }}void solve() {    for(int i = 0; i <= 100000; ++i) {        int id = a[i];        if(id) {            up[id] = up[id+1] = min(up[id], up[id+1]);            dn[id] = dn[id+1] = max(dn[id], dn[id+1]);        }    }    printf("%d", dn[1]-up[1]+1);    for(int i = 2; i <= n; ++i) {        printf(" %d", dn[i]-up[i]+1);    }    puts("");}int main() {    scanf("%d %d", &n, &m);    init();    solve();    return 0;}


原创粉丝点击