1. 程式人生 > >CF每日一題系列 —— 415A

CF每日一題系列 —— 415A

cstring 線性 printf con 操作 for clu %d iostream

http://codeforces.com/problemset/page/7?order=BY_SOLVED_DESC

從5000以內選的,emmm還是比較水的哈

時間還是有的,所以萬事萬物貴在堅持,希望能堅持下去!

Describe:

1 - n個燈線性排列(初始為開),小明可以選擇開關 op,這回把op - n 的燈全部關閉,如果(是關著的狀態沒有影響)

給你小明選擇op的操作順序,輸出順序輸出每個燈是由哪個op操作關了的

Solution:

跑暴力就好了,我用了一個比較水的優化,記錄當前op的最小值,我只用識別比當前最小值的op小的操作就好了,輸出的時候加個判斷就好

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
const int maxn = 1e4;
int r[maxn];
int main()
{
    int n,m;
    while(~scanf("%d%d",&n,&m))
    {
        memset(r,0,sizeof(r));
        int op;
        int flagmin = n+1;
        for(int i = 1;i <= m;++i)
        {
            scanf("%d",&op);
            if(op < flagmin){
                r[op] = op;
                flagmin = op;
            }
        }
        int out = r[1];
        printf("%d",out);
        for(int i = 2;i <= n;++i)
        {
            if(r[i] != 0){
                printf(" %d",r[i]);
                out = r[i];
            }
            else
                printf(" %d",out);
        }
        printf("\n");
    }
    return 0;
}

CF每日一題系列 —— 415A